我试图在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)
答案 0 :(得分:0)
默认情况下,Docker组合在docker环境中创建自己的网络。所以,回答你的问题 - 使用主机网络你应该使用:
network_mode: "host"
如此处所述:https://docs.docker.com/compose/compose-file/compose-file-v2/
但这很少是你真正需要的东西。您定义的端口映射已在主机和容器之间创建端口转发。例如。 host_machine_ip:8200将被转发到您的保管库容器。通过这种方式,您可以决定具体暴露哪些端口。