如果设置了变量,如何配置docker组合使用给定的子网,或者如果它不是自己选择?
问题描述:
我在我的泊坞窗撰写文件中有以下网络配置。如果设置了变量,如何配置docker组合使用给定的子网,或者如果它不是自己选择?
networks:
default:
ipam:
driver: default
config:
- subnet: ${DOCKER_SUBNET}
当DOCKER_SUBNET
被设置时,如预期可以用来在变量中指定的子网。当变量未设置时,我得到:ERROR: Invalid subnet : invalid CIDR address:
,因为变量是空白的(这是完全合理的)。
有没有办法配置ipam驱动程序,使得当DOCKER_SUBNET
变量没有设置时,docker-compose会选择一个可用的子网,就像在没有给出ipam配置时通常那样?
答
如果您没有为网络提供任何ipam
配置,撰写将只会选择一个可用的子网。 Compose没有高级功能来即时修改配置。
您可以使用shell或某种启动docker-compose
命令的其他语言,在multiple compose files或基于模板的系统之外作出决定。从你
单独的网络配置服务配置
docker-compose-net-auto.yml
version: "2.1"
networks:
default:
docker-compose-net-subnet.yml
version: "2.1"
networks:
default:
ipam:
driver: default
config:
- subnet: ${DOCKER_SUBNET}
然后创建一个脚本launch.sh
,使其中的网络文件包含的选择。
#!/bin/sh
if [ -z "$DOCKER_SUBNET" ]; then
docker-compose -f docker-compose.yml -f docker-compose-net-auto.yml up
else
docker-compose -f docker-compose.yml -f docker-compose-net-subnet.yml up
fi