2017-05-12 26 views
1

有沒有辦法告訴碼頭在運行時不使用某個特定的網絡docker-compose up禁止碼頭使用特定的網絡

我正在使用一些開箱即用的示例(hyperledger),並且每次docker都收到一箇中斷我遠程連接的地址。

[[email protected] fabric]$ docker network inspect some_network 
[ 
    { 
     "Name": "some_network", 
     "Id": "xxx", 
     "Scope": "local", 
     "Driver": "bridge", 
     "EnableIPv6": false, 
     "IPAM": { 
      "Driver": "default", 
      "Options": null, 
      "Config": [ 
       { 
        "Subnet": "172.30.0.0/16", 
        "Gateway": "172.30.0.1/16" 
       } 
      ] 
     }, 
     "Internal": false, 
     "Containers": {}, 
     "Options": {}, 
     "Labels": {} 
    } 
] 

我想什麼,就是告訴泊塢窗(無編輯泊塢窗,compose.yaml文件)從來沒有使用網絡172.30.0.0/16

回答

3

docker-compose.yml內部創建網絡時,可以指定IP範圍,子網,網關等。可以這樣做。

version: "3" 

services:  
    service1: 
    build: . 
    ... 

networks: 
    default: 
    subnet: 172.28.0.0/16 
    ip-range: 172.28.5.0/24 
    gateway: 172.28.5.254 

爲此在泊塢守護,你必須通過--bip--fixed-cidr參數。

從碼頭工人文檔:https://docs.docker.com/engine/userguide/networking/default_network/custom-docker0/

--bip=CIDR:提供一個特定的IP地址和子網掩碼爲 docker0橋,使用標準CIDR標記。例如: 192.168.1.5/24

--fixed-cidr=CIDR:使用標準CIDR表示法限制從docker0子網, 的IP範圍。例如:172.16.1.0/28。此範圍 必須是固定IP的IPv4範圍,如10.20.0.0/16,並且必須 是橋IP範圍(docker0或使用-bridge設置)的子集。 例如,使用--fixed-cidr = 192.168.1.0/25,您的 容器的IP將從 子網的192.168.1.0/24子網中包含的前半部分地址中選擇。

爲了使這種更改永久,創建或編輯/etc/docker/daemon.json並添加選項bipfixed-cidr

{ 
"bip": "192.168.1.5/24" 
"fixed-cidr": "192.168.1.0/25" 
} 
+0

謝謝@kstromeiraos。這就是我對我的文件所做的。但是一些生成yaml文件的工具不提供這個選項。我需要把它提到守護進程級別。 – alacambra

+0

檢查我的編輯,它應該修復你的問題。 – kstromeiraos

+0

我已經添加了fixed-cidr選項:root ps result:... 0:02/usr/bin/dockerd --default-ulimit nofile = 1024:4096 --bip = 172.0.0.1/16 --fixed-cidr = 172.0.1.0/20。然而,碼頭網絡檢查e2e_default返回另一個ip「Config」:[ {「Subnet」:「172.2.0.0/16」, 「Gateway」:「172.2.0.1/16」... 與沒有選項完全相同。我錯過了什麼? – alacambra