Docker:如何控制/定义默认的网关设置

任何人都可以阐明一下Docker Compose YML文件是什么? 我想要做的就是能够控制各种容器的IP地址。 我正在使用版本3.1(但也尝试3.3,因为我最近升级到版本17.06)。 该文件说:

A full example: ipam: driver: default config: - subnet: 172.28.0.0/16 Note: Additional IPAM configurations, such as gateway, are only honored for version 2 at the moment. 

当我这样做的时候,当我检查networking时,我需要这个子网。 然而,网关是完全不同的[ 阅读注:上面] ,所以容器不启动。 为什么他们在版本3中失去了能力( 目前 )? 更糟糕的是,为什么没有在3.2或3.3版本中恢复?

也许我在这里的基地 – 肯定不会是第一次! 对我来说最重要的是:是否有办法修改组合文件,以允许Docker Swarm docker stack deploy命令(在Docker Swarm )控制所使用的网关和子网?

最后弄清楚了这一点,我发布了我所做的,希望它可以帮助别人。 虽然当我开始时我不知道这个,我真正想要的是什么? :)]要做的是重新定义docker_gwbridgenetworking的默认设置。

我是这么做的:

 docker swarm init # I am assuming this was already done, this creates the network with default settings docker swarm leave -f # only if you did an 'init' docker network ls # just to see the docker_gwbridge network docker network rm docker_gwbridge # if you never created/initialized a swarm, you can start here SUBNET=172.19.0.0/16 # my defaults were always 172.18, using 19 only to test that this works GATEWAY=172.19.0.1 docker network create --subnet=$SUBNET --gateway $GATEWAY \ -o com.docker.network.bridge.name=docker_gwbridge \ -o com.docker.network.bridge.enable_icc=false \ -o com.docker.network.bridge.enable_ip_masquerade=true \ docker_gwbridge docker swarm init # now start the swarm docker network inspect docker_gwbridge # if you want to see your changes docker stack deploy --compose-file yourFile.yml YOURSTACKNAME 

现在,所有容器都在您定义的子网上启动,并使用您指定的网关。

compose v3中的networkingconfiguration是:

 networks: my_network: driver: overlay ipam: driver: default config: - subnet: 172.28.0.0/16 

然后,您可以将您的容器分配到此networking并指定IP

 services my_service: networks: my_network: ipv4_address: 172.28.0.100 

对于已定义的networking,请使用:

 networks: default: external: name: my-pre-existing-network