docker-compose service listen on specified interface
docker-compose service listen on specified interface
我使用 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"
但不是很方便,因为我必须重写所有ip以防更改。
有没有更简单的方法来做到这一点?
一个优雅的解决方案是创建外部网络。
例如,两个 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-组成你必须创建外部网络
本例中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
我使用 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"
但不是很方便,因为我必须重写所有ip以防更改。
有没有更简单的方法来做到这一点?
一个优雅的解决方案是创建外部网络。
例如,两个 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-组成你必须创建外部网络
本例中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