Docker:如何control/define 默认网关设置
Docker: How to control/define default gateway settings
任何人都可以阐明 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
中)提供对所用网关和子网的控制?
compose v3 中的网络配置是:
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
终于弄明白了,我将我所做的发布出来,希望它能对其他人有所帮助。虽然我开始时并不知道这一点,但我真正想要的是[需要的? :) ] 要做的是重新定义 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
现在您的所有容器都在您定义的子网上启动,并使用您指定的网关。
任何人都可以阐明 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
中)提供对所用网关和子网的控制?
compose v3 中的网络配置是:
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
终于弄明白了,我将我所做的发布出来,希望它能对其他人有所帮助。虽然我开始时并不知道这一点,但我真正想要的是[需要的? :) ] 要做的是重新定义 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
现在您的所有容器都在您定义的子网上启动,并使用您指定的网关。