1

我在我的泊塢窗撰寫文件中有以下網絡配置。如果設置了變量,如何配置docker組合使用給定的子網,或者如果它不是自己選擇?

networks: 
    default: 
     ipam: 
      driver: default 
      config: 
       - subnet: ${DOCKER_SUBNET} 

DOCKER_SUBNET被設置時,如預期可以用來在變量中指定的子網。當變量未設置時,我得到:ERROR: Invalid subnet : invalid CIDR address:,因爲變量是空白的(這是完全合理的)。

有沒有辦法配置ipam驅動程序,使得當DOCKER_SUBNET變量沒有設置時,docker-compose會選擇一個可用的子網,就像在沒有給出ipam配置時通常那樣?

回答

1

如果您沒有爲網絡提供任何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 
相關問題