2017-08-22 51 views
0

我創建使用此命令覆蓋網絡:搬運工堆棧部署不使用覆蓋網絡創建

docker network create --driver overlay --internal --subnet 192.168.0.0/24 test 

,然後我試圖與一個服務部署堆棧。堆棧的YAML文件看起來像:

--- 
version: "3.0" 
services: 
    web1: 
    image: "test" 
    ports: 
     - "12023:22" 
    hostname: "ard014-web1" 
    networks: 
     - test 
networks: 
    test: 
    driver: overlay 

我用命令部署堆棧:

docker stack deploy -c test.yaml test 

,如果我請與搬運工人網絡LS我找到新的覆蓋網絡獲取與名稱test_test和創建的網絡容器使用此網絡而不是已經創建的網絡。這是預期的行爲?我希望堆棧使用手動創建的網絡,而不是創建新網絡,因爲我想控制覆蓋網絡使用的IP CIDR範圍。我怎麼能做到這一點?

回答

2

要使用現有的網絡,把它定義爲「外部」:

version: "3.0" 
services: 
    web1: 
    image: "test" 
    ports: 
     - "12023:22" 
    hostname: "ard014-web1" 
    networks: 
     - test 
networks: 
    test: 
    external: 
     name: test 

更多細節在這裏:https://docs.docker.com/compose/compose-file/#external-1

+0

感謝@BMitch你的答案工作就像一個魅力:) – tkyass

+0

我注意到,我可以使用這在已經被創建用於改變它的網絡的容器上。我收到了錯誤消息:「來自守護程序的錯誤響應:rpc錯誤:代碼= 2 desc =不支持更改服務中的網絡」 – tkyass

+0

@tkyass有技術原因,或許服務VIP不能使用滾動升級。解決方法是在進行像這樣的更改時刪除現有服務。 – BMitch