2016-07-25 5 views
2

私はmac osでdocker-machineを使用しました。docker 1.12 swarm mode:オーバーレイネットワーク上の別のコンテナに接続する方法とloadbalanceを使用する方法は?

➜ docker-machine create --driver virtualbox docker1 
➜ docker-machine create --driver virtualbox docker2 
➜ docker-machine create --driver virtualbox docker3 

➜ config docker-machine ls 
NAME  ACTIVE DRIVER  STATE  URL       SWARM DOCKER  ERRORS 
docker1 -  virtualbox Running tcp://192.168.99.100:2376   v1.12.0-rc4 
docker2 -  virtualbox Running tcp://192.168.99.101:2376   v1.12.0-rc4 
docker3 -  virtualbox Running tcp://192.168.99.102:2376   v1.12.0-rc4 


➜ config docker-machine ssh docker1 
[email protected]:~$ docker swarm init 
No --secret provided. Generated random secret: 
    b0wcyub7lbp8574mk1oknvavq 

Swarm initialized: current node (8txt830ivgrxxngddtx7k4xe4) is now a manager. 

To add a worker to this swarm, run the following command: 
    docker swarm join --secret b0wcyub7lbp8574mk1oknvavq \ 
    --ca-hash sha256:e06f5213f5c67a708b2fa5b819f441fce8006df41d588ad7823e5d0d94f15f02 \ 
    10.0.2.15:2377 


# on host docker2 and host docker3, I run cammand to join the cluster: 

[email protected]:~$ docker swarm join --secret b0wcyub7lbp8574mk1oknvavq --ca-hash sha256:e06f5213f5c67a708b2fa5b819f441fce8006df41d588ad7823e5d0d94f15f02 192.1 
68.99.100:2377 
This node joined a Swarm as a worker. 

[email protected]:~$ docker swarm join --secret b0wcyub7lbp8574mk1oknvavq --ca-hash sha256:e06f5213f5c67a708b2fa5b819f441fce8006df41d588ad7823e5d0d94f15f02 192.1 
68.99.100:2377 
This node joined a Swarm as a worker. 

# on docker1: 
[email protected]:~$ docker node ls 
ID       HOSTNAME MEMBERSHIP STATUS AVAILABILITY MANAGER STATUS 
8txt830ivgrxxngddtx7k4xe4 * docker1 Accepted Ready Active  Leader 
9fliuzb9zl5jcqzqucy9wfl4y docker2 Accepted Ready Active 
c4x8rbnferjvr33ff8gh4c6cr docker3 Accepted Ready Active 

次に、docker1のオーバーレイドライバを使用してネットワークmynetを作成します。 最初の質問:が、私は他のドッキングウィンドウのホスト上でネットワークを参照してくださいcann`t:

[email protected]:~$ docker service create --name nginx --network mynet --replicas 1 -p 80:80 dhub.yunpro.cn/shenshouer/nginx:hostname 
9d7xxa8ukzo7209r30f0rmcut 
[email protected]:~$ docker service tasks nginx 
ID       NAME  SERVICE IMAGE          LAST STATE    DESIRED STATE NODE 
0dvgh9xfwz7301jmsh8yc5zpe nginx.1 nginx dhub.yunpro.cn/shenshouer/nginx:hostname Running 12 seconds ago Running  docker3 

[email protected]:~$ docker network create --driver overlay mynet 
a1v8i656el5d3r45k985cn44e 
[email protected]:~$ docker network ls 
NETWORK ID   NAME    DRIVER    SCOPE 
5ec55ffde8e4  bridge    bridge    local 
83967a11e3dd  docker_gwbridge  bridge    local 
7f856c9040b3  host    host    local 
bpoqtk71o6qo  ingress    overlay    swarm 
a1v8i656el5d  mynet    overlay    swarm 
829a614aa278  none    null    local 

[email protected]:~$ docker network ls 
NETWORK ID   NAME    DRIVER    SCOPE 
da07b3913bd4  bridge    bridge    local 
7a2e627634b9  docker_gwbridge  bridge    local 
e8971c2b5b21  host    host    local 
bpoqtk71o6qo  ingress    overlay    swarm 
c37de5447a14  none    null    local 

[email protected]:~$ docker network ls 
NETWORK ID   NAME    DRIVER    SCOPE 
06eb8f0bad11  bridge    bridge    local 
fb5e3bcae41c  docker_gwbridge  bridge    local 
e167d97cd07f  host    host    local 
bpoqtk71o6qo  ingress    overlay    swarm 
6540ece8e146  none    null    local 

を私はdocker1にインデックスページでデフォルトのホスト名をエコーnginxのサービスを作成

2番目の質問: docker1ホストのIPからサービスにアクセスできません。私はdocker3のIPにアクセスするための応答を得るだ​​けです。

➜ tools curl 192.168.99.100 
curl: (52) Empty reply from server 
➜ tools curl 192.168.99.102 
fda9fb58f9d4 

私はロードバランスがないと思います。ビルドインロードバランスを使用するにはどうすればよいですか?

その後、私はテストのpingにbusyboxのイメージと同じネットワーク上の別のサービスを作成します。

[email protected]:~$ docker service create --name busybox --network mynet --replicas 1 busybox sleep 3000 
akxvabx66ebjlak77zj6x1w4h 
[email protected]:~$ docker service tasks busybox 
ID       NAME  SERVICE IMAGE LAST STATE    DESIRED STATE NODE 
9yc3svckv98xtmv1d0tvoxbeu busybox.1 busybox busybox Running 11 seconds ago Running  docke1 

# on host docker3. I got the container name and the container IP to ping test: 

[email protected]:~$ docker ps 
CONTAINER ID  IMAGE          COMMAND     CREATED    STATUS    PORTS    NAMES 
fda9fb58f9d4  dhub.yunpro.cn/shenshouer/nginx:hostname "sh -c /entrypoint.sh" 7 minutes ago  Up 7 minutes  80/tcp, 443/tcp  nginx.1.0dvgh9xfwz7301jmsh8yc5zpe 

[email protected]:~$ docker inspect fda9fb58f9d4 
... 

      "Networks": { 
       "ingress": { 
        "IPAMConfig": { 
         "IPv4Address": "10.255.0.7" 
        }, 
        "Links": null, 
        "Aliases": [ 
         "fda9fb58f9d4" 
        ], 
        "NetworkID": "bpoqtk71o6qor8t2gyfs07yfc", 
        "EndpointID": "98c98a9cc0fcc71511f0345f6ce19cc9889e2958d9345e200b3634ac0a30edbb", 
        "Gateway": "", 
        "IPAddress": "10.255.0.7", 
        "IPPrefixLen": 16, 
        "IPv6Gateway": "", 
        "GlobalIPv6Address": "", 
        "GlobalIPv6PrefixLen": 0, 
        "MacAddress": "02:42:0a:ff:00:07" 
       }, 
       "mynet": { 
        "IPAMConfig": { 
         "IPv4Address": "10.0.0.3" 
        }, 
        "Links": null, 
        "Aliases": [ 
         "fda9fb58f9d4" 
        ], 
        "NetworkID": "a1v8i656el5d3r45k985cn44e", 
        "EndpointID": "5f3c5678d40b6a7a2495963c16a873c6a2ba14e94cf99d2aa3fa087b67a46cce", 
        "Gateway": "", 
        "IPAddress": "10.0.0.3", 
        "IPPrefixLen": 24, 
        "IPv6Gateway": "", 
        "GlobalIPv6Address": "", 
        "GlobalIPv6PrefixLen": 0, 
        "MacAddress": "02:42:0a:00:00:03" 
       } 
      } 
     } 
    } 
] 


# on host docker1 : 
[email protected]:~$ docker ps 
CONTAINER ID  IMAGE    COMMAND    CREATED    STATUS    PORTS    NAMES 
b94716e9252e  busybox:latest  "sleep 3000"  2 minutes ago  Up 2 minutes       busybox.1.9yc3svckv98xtmv1d0tvoxbeu 
[email protected]:~$ docker exec -it b94716e9252e ping nginx.1.0dvgh9xfwz7301jmsh8yc5zpe 
ping: bad address 'nginx.1.0dvgh9xfwz7301jmsh8yc5zpe' 
[email protected]:~$ docker exec -it b94716e9252e ping 10.0.0.3 
PING 10.0.0.3 (10.0.0.3): 56 data bytes 
90 packets transmitted, 0 packets received, 100% packet loss 

3番目の質問:同一ネットワーク上の各コンテナと通信する方法を?

として

とネットワークMYNET:

[email protected]:~$ docker network ls 
NETWORK ID   NAME    DRIVER    SCOPE 
5ec55ffde8e4  bridge    bridge    local 
83967a11e3dd  docker_gwbridge  bridge    local 
7f856c9040b3  host    host    local 
bpoqtk71o6qo  ingress    overlay    swarm 
a1v8i656el5d  mynet    overlay    swarm 
829a614aa278  none    null    local 
[email protected]:~$ docker network inspect mynet 
[ 
    { 
     "Name": "mynet", 
     "Id": "a1v8i656el5d3r45k985cn44e", 
     "Scope": "swarm", 
     "Driver": "overlay", 
     "EnableIPv6": false, 
     "IPAM": { 
      "Driver": "default", 
      "Options": null, 
      "Config": [ 
       { 
        "Subnet": "10.0.0.0/24", 
        "Gateway": "10.0.0.1" 
       } 
      ] 
     }, 
     "Internal": false, 
     "Containers": { 
      "b94716e9252e6616f0f4c81e0c7ef674d7d5f4fafe931953fced9ef059faeb5f": { 
       "Name": "busybox.1.9yc3svckv98xtmv1d0tvoxbeu", 
       "EndpointID": "794be0e92b34547e44e9a5e697ab41ddd908a5db31d0d31d7833c746395534f5", 
       "MacAddress": "02:42:0a:00:00:05", 
       "IPv4Address": "10.0.0.5/24", 
       "IPv6Address": "" 
      } 
     }, 
     "Options": { 
      "com.docker.network.driver.overlay.vxlanid_list": "257" 
     }, 
     "Labels": {} 
    } 
] 


[email protected]:~$ docker network ls 
NETWORK ID   NAME    DRIVER    SCOPE 
da07b3913bd4  bridge    bridge    local 
7a2e627634b9  docker_gwbridge  bridge    local 
e8971c2b5b21  host    host    local 
bpoqtk71o6qo  ingress    overlay    swarm 
c37de5447a14  none    null    local 

[email protected]:~$ docker network ls 
NETWORK ID   NAME    DRIVER    SCOPE 
06eb8f0bad11  bridge    bridge    local 
fb5e3bcae41c  docker_gwbridge  bridge    local 
e167d97cd07f  host    host    local 
bpoqtk71o6qo  ingress    overlay    swarm 
a1v8i656el5d  mynet    overlay    swarm 
6540ece8e146  none    null    local 

[email protected]:~$ docker network inspect mynet 
[ 
    { 
     "Name": "mynet", 
     "Id": "a1v8i656el5d3r45k985cn44e", 
     "Scope": "swarm", 
     "Driver": "overlay", 
     "EnableIPv6": false, 
     "IPAM": { 
      "Driver": "default", 
      "Options": null, 
      "Config": [ 
       { 
        "Subnet": "10.0.0.0/24", 
        "Gateway": "10.0.0.1" 
       } 
      ] 
     }, 
     "Internal": false, 
     "Containers": { 
      "fda9fb58f9d46317ef1df60e597bd14214ec3fac43e32f4b18a39bb92925aa7e": { 
       "Name": "nginx.1.0dvgh9xfwz7301jmsh8yc5zpe", 
       "EndpointID": "5f3c5678d40b6a7a2495963c16a873c6a2ba14e94cf99d2aa3fa087b67a46cce", 
       "MacAddress": "02:42:0a:00:00:03", 
       "IPv4Address": "10.0.0.3/24", 
       "IPv6Address": "" 
      } 
     }, 
     "Options": { 
      "com.docker.network.driver.overlay.vxlanid_list": "257" 
     }, 
     "Labels": {} 
    } 
] 

ので第四の質問:はビルドint型のKVストアが存在していますか?

答えて

3

質問1:群れは、そのホスト上でタスクを割り当てるときに、他のホスト上のネットワークが、オンデマンドで作成され、ネットワークが作成されます。

質問2:ロード・バランシングは、箱から出して動作しますが、あなたは群れのクラスタをドッカとおそらくいくつかの問題があります。あなたは

質問3のiptablesとIPVSルールを確認する必要があります。同じオーバーレイネットワーク(あなたのケースでMYNET)上のコンテナがお互いに話すことができるし、そしてドッキングウィンドウは、IPアドレスにコンテナ名を解決することができますbuildinのDNSサーバを持っている

質問4:そうです。

+0

再生いただきありがとうございます。 boot2dockerのipvsモジュールがロードされなかったので、私は問題が発生しました。負荷バランスには問題があります。 OSをdebianに変更しても問題ありません。 – sope

関連する問題