2017-08-10 36 views
0

任何人都可以闡明一下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內的網絡

回答

1

終於明白了這一點,我發佈了我所做的,希望它可以幫助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 

現在所有的容器上使用您指定的網關所定義的子網,也可以開始。

0

配置爲:

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 
+0

是的,我試圖暗示這是'榮幸',但容器無法啓動,因爲您也沒有顯示的網關被設置爲默認值,比如172.18.1.1 – JoeG

+0

您可以隨時創建網絡你自己,'碼頭網絡創建 - 網關「任何」'並將你的容器附加到它 – Rawkode

+0

試圖,然後碼頭堆棧部署失敗,因爲該網絡已經存在。 Ick .... – JoeG

相關問題