码头工人:如何控制/定义默认的网关设置
问题描述:
任何人都可以阐明一下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.
当我这样做,我需要该子网时,我检查网络。但是网关是完全不同的[阅读注意:上面],所以容器不启动。为什么他们在版本3中失去了能力(在时刻)的某些功能在版本2中有效?更糟糕的是,为什么没有在3.2或3.3版本中恢复?
也许我在这里的基地 - 肯定不会是第一次!对我来说最重要的是:是否有办法修改组合文件以允许docker stack deploy
命令(在Docker Swarm
中)提供对使用的网关和子网的控制?撰写V3内的网络
答
终于明白了这一点,我发布了我所做的,希望它可以帮助p别人。虽然当我开始时我不知道这一点,但我真正想要的是什么? :)]要做的是重新定义docker_gwbridge
网络的默认设置。
这是我怎么做的:
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
现在所有的容器上使用您指定的网关所定义的子网,也可以开始。
答
配置为:
networks:
my_network:
driver: overlay
ipam:
driver: default
config:
-
subnet: 172.28.0.0/16
然后,您可以指定你的容器到该网络并指定IP
services
my_service:
networks:
my_network:
ipv4_address: 172.28.0.100
对于已经定义的网络,使用:
networks:
default:
external:
name: my-pre-existing-network
是的,我试图暗示这是'荣幸',但容器无法启动,因为您也没有显示的网关被设置为默认值,比如172.18.1.1 – JoeG
您可以随时创建网络你自己,'码头网络创建 - 网关“任何”'并将你的容器附加到它 – Rawkode
试图,然后码头堆栈部署失败,因为该网络已经存在。 Ick .... – JoeG