我使用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"
Run Code Online (Sandbox Code Playgroud)
但它不是很方便,因为我必须在改变的情况下重写所有的ips.
有没有更简单的方法来做到这一点?
一种优雅的解决方案是创建外部网络。
例如,两个 nginx 使用外部网络(互联网和内联网):
服务定义:
nginx1:
build: ./nginx
ports:
- "80:80"
networks:
- intranet
nginx2:
build: ./nginx
ports:
- "80:80"
networks:
- internet
Run Code Online (Sandbox Code Playgroud)
网络定义:
networks:
internet:
external: true
intranet:
external: true
Run Code Online (Sandbox Code Playgroud)
然后,在 docker-compose up 之前,您必须创建外部网络
本例中192.168.178.69为外网侧ip,10.5.1.22为内网侧ip
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
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
1399 次 |
| 最近记录: |