docker-compose不能使用私有IP

时间:2017-07-10 10:21:17

标签: docker consul

我试图在docker-compose中运行2个容器。我的docker-compose.yml是:

version: '2'
services:

  consul:
    image: "consul:0.8.3"
    hostname: "consul"
    command: "agent -server -client=0.0.0.0 -retry-join=10.30.1.97 -retry-join=10.30.1.42 -bootstrap-expect=3 -ui"
    ports:
      - "8400:8400"
      - "8500:8500"
      - "8300:8300"
      - "8600:53/udp"
  vault:
    depends_on:
      - consul
    image: "vault"
    hostname: "vault"
    links:
      - "consul:consul"
    environment:
      VAULT_ADDR: http://127.0.0.1:8200
    ports:
      - "8200:8200"
    volumes:
      - ./tools/wait-for-it.sh:/wait-for-it.sh
      - ./config/vault:/config
      - ./config/vault/policies:/policies
    entrypoint: /wait-for-it.sh -t 20 -h consul -p 8500 -s -- vault server -config=/config/with-consul.hcl

我在开始时遇到的问题是,consul容器没有使用IP 10.30.1.134(主机的IP) 相反,它正在使用我认为一个桥梁网络:

2017/07/10 10:09:12 [INFO] raft: Node at 172.18.0.2:8300 [Follower] entering Follower state (Leader: "")

如何强制它使用10.30.1.134?

eth0链接封装:以太网HWaddr 06:f5:74:4c:ad:9e
          inet addr:10.30.1.134 Bcast:10.30.1.255 Mask:255.255.255.0           inet6 addr:fe80 :: 4f5:74ff:fe4c:ad9e / 64范围:链接           UP BROADCAST RUNNING MULTICAST MTU:9001公制:1           RX数据包:9907809错误:0丢弃:0超限:0帧:0           TX数据包:17142864错误:0丢弃:0超限:0载波:0           碰撞:0 txqueuelen:1000           RX字节:1328463684(1.3 GB)TX字节:2178517759(2.1 GB)

1 个答案:

答案 0 :(得分:0)

默认情况下,Docker组合在docker环境中创建自己的网络。所以,回答你的问题 - 使用主机网络你应该使用:

network_mode: "host"

如此处所述:https://docs.docker.com/compose/compose-file/compose-file-v2/

但这很少是你真正需要的东西。您定义的端口映射已在主机和容器之间创建端口转发。例如。 host_machine_ip:8200将被转发到您的保管库容器。通过这种方式,您可以决定具体暴露哪些端口。