docker-compose服务侦听指定的接口

时间:2016-05-22 19:58:12

标签: docker-compose

我使用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。

有没有更简单的方法来做到这一点?

1 个答案:

答案 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