我使用docker-machine和docker-compose。
我使用的docker机器有多个接口。
有没有办法强制服务只在机器的特定接口上侦听,而不用在端口部分定义该接口的IP地址?
现在我在docker-compose.yml
中使用它 ports:
- "10.5.1.28:80:80"
- "10.5.1.28:2222:22"
- "10.5.1.28:443:443"
但它不是很方便,因为我必须在改变的情况下重写所有的ips。
有没有更简单的方法来做到这一点?
答案 0 :(得分:2)
一个优雅的解决方案是创建外部网络。
例如,使用外部网络(互联网和内联网)的两个nginx:
服务定义:
nginx1:
build: ./nginx
ports:
- "80:80"
networks:
- intranet
nginx2:
build: ./nginx
ports:
- "80:80"
networks:
- internet
网络定义:
networks:
internet:
external: true
intranet:
external: true
然后在第一个docker-compose之前,你将不得不创建外部网络
在这个例子中,192.168.178.69是互联网端的ip和内联网端的10.5.1.22
docker network create -d bridge -o \
com.docker.network.bridge.host_binding_ipv4=192.168.178.69 internet
docker network create -d bridge -o \
com.docker.network.bridge.host_binding_ipv4=10.5.1.22 intranet