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_gwbridge
networking的默认设置。
我是这么做的:
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