基於swarm實現跨主機docker通信

概述

使用Docker的swarm模式,需要安裝Docker的1.12.0或者更新的版本。

swarm的特點包括:

  1. 集成進Docker引擎;
  2. 去中心化設計;
  3. 可縮放擴展;
  4. 狀態監控;
  5. 跨主機通信;
  6. 負載均衡;
  7. 安全;
  8. 滾動升級。

基本概念

節點

運行Docker的主機可以主動初始化一個swarm集羣,或者加入一個已經存在的swarm集羣,這樣這個運行Docker的主機就成爲一個swarm集羣的節點(node)。

節點可以分爲管理節點和工作節點:

  1. 管理節點:用於swarm集羣管理的節點,一個swarm集羣可以有多個管理節點,但是隻有一個管理節點可以成爲leader,leader通過raft協議實現。
  2. 工作節點:任務執行的節點,管理節點將服務(service)下發至工作節點執行。管理節點默認也可以爲工作節點。

在這裏插入圖片描述

服務和任務

任務(task)是swarm中最小的調度單位,目前來說是單一的容器。

服務(services)是指一組任務的集合,服務定義了任務的屬性。服務包括兩種模式:

  1. replicated services,按照一定的規則在各個工作節點上運行指定數量的任務;
  2. global services,每個工作節點上運行一個任務。

在這裏插入圖片描述

create a swarm

創建一個新的swarm:

[root@jamza_vm_master_litepaas ~]# docker swarm init --advertise-addr 192.168.83.83
Swarm initialized: current node (8g9b2wnb82wno5gkx60fdli9h) is now a manager.

To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-5a8t5fz2rqel51bdvvcjq3oemeg1bcdk1ry85f27abft4lomyo-cn9kucfudl1rlqf4wrqrx00gh \
    192.168.83.83:2377

To add a manager to this swarm, run 'docker swarm join-token manager' and follow the instructions.

[root@jamza_vm_master_litepaas ~]#

指令中的–advertise-addr選項配置管理節點的公開IP地址,在swarm中的其他節點需要能夠訪問到該地址。

通過指令docker info來查看當前swarm的狀態:

[root@jamza_vm_master_litepaas ~]# docker info
......
Swarm: active
 NodeID: 8g9b2wnb82wno5gkx60fdli9h
 Is Manager: true
 ClusterID: 29eo1av9nwk38a4dsx8dg6vao
 Managers: 1
 Nodes: 1
......

查看node節點信息的指令:

[root@jamza_vm_master_litepaas ~]# docker node ls
ID                           HOSTNAME                  STATUS  AVAILABILITY  MANAGER STATUS
8g9b2wnb82wno5gkx60fdli9h *  jamza_vm_master_litepaas  Ready   Active        Leader
[root@jamza_vm_master_litepaas ~]#

Add nodes to the swarm

在工作節點上運行docker swarm init的輸出指令,將工作節點加入到之前創建的的swarm。可以在管理節點執行以下的命令,以查看加入指令的內容:

[root@jamza_vm_master_litepaas ~]# docker swarm join-token worker
To add a worker to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-5a8t5fz2rqel51bdvvcjq3oemeg1bcdk1ry85f27abft4lomyo-cn9kucfudl1rlqf4wrqrx00gh \
    192.168.83.83:2377

[root@jamza_vm_master_litepaas ~]#
[root@jamza_vm_master_litepaas ~]# docker swarm join-token manager
To add a manager to this swarm, run the following command:

    docker swarm join \
    --token SWMTKN-1-5a8t5fz2rqel51bdvvcjq3oemeg1bcdk1ry85f27abft4lomyo-c5d1vz4lkhwvkiqr5uii6ezlo \
    192.168.83.83:2377

[root@jamza_vm_master_litepaas ~]#

在工作節點執行docker swarm join指令,將工作節點加入到swarm中:

[root@jamza_vm_slave_litepaas ~]#  docker swarm join --token SWMTKN-1-5a8t5fz2rqel51bdvvcjq3oemeg1bcdk1ry85f27abft4lomyo-cn9kucfudl1rlqf4wrqrx00gh 192.168.83.83:237
This node joined a swarm as a worker.
[root@jamza_vm_slave_litepaas ~]#

[root@jamza_vm_lp0_litepaas ~]# docker swarm join     --token SWMTKN-1-5a8t5fz2rqel51bdvvcjq3oemeg1bcdk1ry85f27abft4lomyo-cn9kucfudl1rlqf4wrqrx00gh 192.168.83.83:2377
This node joined a swarm as a worker.
[root@jamza_vm_lp0_litepaas ~]#

在管理節點執行docker node ls命令,查看當前swarm集羣中的節點信息:

[root@jamza_vm_master_litepaas ~]# docker node ls
ID                           HOSTNAME                  STATUS  AVAILABILITY  MANAGER STATUS
223cec79gjydf7pxqts9gn098    jamza_vm_lp0_litepaas     Ready   Active
3d1i3ammfohefre5fvtma90en    jamza_vm_slave_litepaas   Ready   Active
8g9b2wnb82wno5gkx60fdli9h *  jamza_vm_master_litepaas  Ready   Active        Leader
[root@jamza_vm_master_litepaas ~]#

Deploy a service to the swarm

部署服務到swarm中,使用命令docker service來在管理節點進行部署:

[root@jamza_vm_master_litepaas ~]# docker service create --replicas 1 --name test busybox/x86_64:latest ping www.zte.com.cn
9oa3y95hyi4n82sypqyx414wx
[root@jamza_vm_master_litepaas ~]#

命令docker service ls來查看當前運行的服務列表:

[root@jamza_vm_master_litepaas ~]# docker service ls
ID            NAME  REPLICAS  IMAGE                  COMMAND
9oa3y95hyi4n  test  1/1       busybox/x86_64:latest  ping www.zte.com.cn
[root@jamza_vm_master_litepaas ~]#

Inspect a service on the swarm

運行命令docker service inspect --pretty <SERVICE-ID>以易讀的方式顯示服務的細節信息:

[root@jamza_vm_master_litepaas ~]# docker service inspect --pretty test
ID:             9oa3y95hyi4n82sypqyx414wx
Name:           test
Mode:           Replicated
 Replicas:      1
Placement:
UpdateConfig:
 Parallelism:   1
 On failure:    pause
ContainerSpec:
 Image:         busybox/x86_64:latest
 Args:          ping www.zte.com.cn
Resources:
[root@jamza_vm_master_litepaas ~]#

命令若沒有–pretty選項,則命令輸出json格式的服務細節數據:

[root@jamza_vm_master_litepaas ~]# docker service inspect test
[
    {
        "ID": "9oa3y95hyi4n82sypqyx414wx",
        "Version": {
            "Index": 22
        },
        "CreatedAt": "2019-07-23T01:48:02.854375874Z",
        "UpdatedAt": "2019-07-23T01:48:02.854375874Z",
        "Spec": {
            "Name": "test",
            "TaskTemplate": {
                "ContainerSpec": {
                    "Image": "busybox/x86_64:latest",
                    "Args": [
                        "ping",
                        "www.zte.com.cn"
                    ]
                },
                "Resources": {
                    "Limits": {},
                    "Reservations": {}
                },
                "RestartPolicy": {
                    "Condition": "any",
                    "MaxAttempts": 0
                },
                "Placement": {}
            },
            "Mode": {
                "Replicated": {
                    "Replicas": 1
                }
            },
            "UpdateConfig": {
                "Parallelism": 1,
                "FailureAction": "pause"
            },
            "EndpointSpec": {
                "Mode": "vip"
            }
        },
        "Endpoint": {
            "Spec": {}
        },
        "UpdateStatus": {
            "StartedAt": "0001-01-01T00:00:00Z",
            "CompletedAt": "0001-01-01T00:00:00Z"
        }
    }
]
[root@jamza_vm_master_litepaas ~]#

查看服務在哪些節點上運行的命令:

[root@jamza_vm_master_litepaas ~]# docker service ps test
ID                         NAME        IMAGE                  NODE                      DESIRED STATE  CURRENT STATE              ERROR                      PORTS
as1ngt44uicxtrhudlprnelst  test.1      busybox/x86_64:latest  jamza_vm_lp0_litepaas     Running        Preparing 5 seconds ago       
30vsl3rvfihqw35845efdxlol   \_ test.1  busybox/x86_64:latest  jamza_vm_master_litepaas  Shutdown       Failed 7 seconds ago       "task: non-zero exit (1)"
6adf8axf237asu2a7mbjxf0cl   \_ test.1  busybox/x86_64:latest  jamza_vm_lp0_litepaas     Shutdown       Failed 22 seconds ago      "task: non-zero exit (1)"
6hgoqpnxajuxvss0fe6iy5jak   \_ test.1  busybox/x86_64:latest  jamza_vm_master_litepaas  Shutdown       Failed about a minute ago  "task: non-zero exit (1)"
8w57yvntpf01rj5w1efws1bme   \_ test.1  busybox/x86_64:latest  jamza_vm_lp0_litepaas     Shutdown       Failed about a minute ago  "task: non-zero exit (1)"
[root@jamza_vm_master_litepaas ~]#

Scale the service in the swarm

擴展服務在swarm中的數量,使用命令 docker service scale <SERVICE-ID>=<NUMBER-OF-TASKS>。

[root@jamza_vm_master_litepaas ~]# docker service scale test=5
test scaled to 5
[root@jamza_vm_master_litepaas ~]#
[root@jamza_vm_master_litepaas ~]# docker service ps test
ID                         NAME        IMAGE                  NODE                      DESIRED STATE  CURRENT STATE              ERROR                      PORTS
c2oid2997y9zpd6154i05q5jc  test.1      busybox/x86_64:latest  jamza_vm_master_litepaas  Running        Running 1 seconds ago         
1tk24o0i3xq2jsq2tdibqrrak   \_ test.1  busybox/x86_64:latest  jamza_vm_lp0_litepaas     Shutdown       Failed 10 seconds ago      "task: non-zero exit (1)"
2tjpx64l92i00913uws9aq7bo   \_ test.1  busybox/x86_64:latest  jamza_vm_master_litepaas  Shutdown       Failed 53 seconds ago      "task: non-zero exit (1)"
4lrnr37fs4ba1ba0a5i73pzlz   \_ test.1  busybox/x86_64:latest  jamza_vm_master_litepaas  Shutdown       Failed about a minute ago  "task: non-zero exit (1)"
2117vltxgdpj5h1acweeg08ca   \_ test.1  busybox/x86_64:latest  jamza_vm_master_litepaas  Shutdown       Failed about a minute ago  "task: non-zero exit (1)"
cfmntu6njhktxxcevfyelmtra  test.2      busybox/x86_64:latest  jamza_vm_slave_litepaas   Running        Running 28 seconds ago        
0tns514yt7o0b74vwoj6ce000   \_ test.2  busybox/x86_64:latest  jamza_vm_slave_litepaas   Shutdown       Failed 40 seconds ago      "task: non-zero exit (1)"
8rx4x29huix13qw54hdv7ofse  test.3      busybox/x86_64:latest  jamza_vm_lp0_litepaas     Running        Running 23 seconds ago        
78vzwi4abrye273ofgeoug4nr   \_ test.3  busybox/x86_64:latest  jamza_vm_master_litepaas  Shutdown       Failed 36 seconds ago      "task: non-zero exit (1)"
b9iec61cvlr3ep5v77520b0ph   \_ test.3  busybox/x86_64:latest  jamza_vm_master_litepaas  Shutdown       Failed 53 seconds ago      "task: non-zero exit (1)"
5a7l8uyto4m27zltnwfd5yhfj   \_ test.3  busybox/x86_64:latest  jamza_vm_lp0_litepaas     Shutdown       Failed about a minute ago  "task: non-zero exit (1)"
4x6psxf99r72h10l5nbv6tpk4  test.4      busybox/x86_64:latest  jamza_vm_lp0_litepaas     Running        Preparing 8 seconds ago       
b1ug9nw8yisd61uthww5yb6eh   \_ test.4  busybox/x86_64:latest  jamza_vm_master_litepaas  Shutdown       Failed 10 seconds ago      "task: non-zero exit (1)"
1u0s6dye1azbiizdjuic9pdhw   \_ test.4  busybox/x86_64:latest  jamza_vm_master_litepaas  Shutdown       Failed 31 seconds ago      "task: non-zero exit (1)"
cd39ndjf987zchaou1eg166s1   \_ test.4  busybox/x86_64:latest  jamza_vm_lp0_litepaas     Shutdown       Failed 49 seconds ago      "task: non-zero exit (1)"
3tqf41mii1ib4u190i356midx   \_ test.4  busybox/x86_64:latest  jamza_vm_master_litepaas  Shutdown       Failed about a minute ago  "task: non-zero exit (1)"
152x1715owxir8ufqzp9q2if1  test.5      busybox/x86_64:latest  jamza_vm_slave_litepaas   Running        Running 28 seconds ago        
9c9oejc87dgwcj9cihoinq43x   \_ test.5  busybox/x86_64:latest  jamza_vm_slave_litepaas   Shutdown       Failed 40 seconds ago      "task: non-zero exit (1)"
[root@jamza_vm_master_litepaas ~]#
[root@jamza_vm_master_litepaas ~]# docker ps -a
CONTAINER ID        IMAGE                   COMMAND                 CREATED              STATUS                          PORTS               NAMES
7dfd722bf5f5        busybox/x86_64:latest   "ping www.zte.com.cn"   8 seconds ago        Up 6 seconds                                        test.4.a0piipgv0c1ski8861jp5fdq7
b45e102aab79        busybox/x86_64:latest   "ping www.zte.com.cn"   8 seconds ago        Exited (0) 1 seconds ago                            test.1.2sq8s9yh92m3yutz29kbaq710
60b25e8184e0        busybox/x86_64:latest   "ping www.zte.com.cn"   30 seconds ago       Exited (0) 23 seconds ago                           test.5.4s6z68y523uwacgdc9v5qs38c
aac4433445e0        busybox/x86_64:latest   "ping www.zte.com.cn"   30 seconds ago       Exited (0) 18 seconds ago                           test.4.7nfsxda0c58p5z2ubkoqs7gl1
3de916af5ec6        busybox/x86_64:latest   "ping www.zte.com.cn"   51 seconds ago       Exited (0) 44 seconds ago                           test.5.e7kl3xkjkql8g4f9v7le1ygo9
29a98fc894b1        busybox/x86_64:latest   "ping www.zte.com.cn"   About a minute ago   Exited (0) 58 seconds ago                           test.1.c2oid2997y9zpd6154i05q5jc
686968162f39        busybox/x86_64:latest   "ping www.zte.com.cn"   About a minute ago   Exited (0) About a minute ago                       test.4.b1ug9nw8yisd61uthww5yb6eh
e03d39140b44        busybox/x86_64:latest   "ping www.zte.com.cn"   About a minute ago   Exited (0) About a minute ago                       test.4.1u0s6dye1azbiizdjuic9pdhw
f6d52faef2de        busybox/x86_64:latest   "ping www.zte.com.cn"   About a minute ago   Exited (0) About a minute ago                       test.3.78vzwi4abrye273ofgeoug4nr
01f105eaf794        busybox/x86_64:latest   "ping www.zte.com.cn"   2 minutes ago        Exited (0) 2 minutes ago                            test.3.b9iec61cvlr3ep5v77520b0ph
[root@jamza_vm_master_litepaas ~]#

Delete the service running on the swarm

刪除服務,使用命令docker service rm,比如:

[root@jamza_vm_master_litepaas ~]# docker service rm test
test
[root@jamza_vm_master_litepaas ~]#
[root@jamza_vm_master_litepaas ~]# docker service ps test
Error: No such service: test
[root@jamza_vm_master_litepaas ~]#
[root@jamza_vm_master_litepaas ~]#
[root@jamza_vm_master_litepaas ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@jamza_vm_master_litepaas ~]#

安裝17.03版本docker

卸載舊版本的docker

[root@jamza_vm_slave_litepaas ~]# yum remove docker  docker-common docker-selinux docker-engine

下載rpm安裝包:

[root@jamza_vm_slave_litepaas app]# ll
總用量 19376
-rwxr--r--. 1 1000 1000 19535688 7月  23 15:58 docker-ce-17.03.3.ce-1.el7.x86_64.rpm
-rwxr--r--. 1 1000 1000    29392 7月  23 15:58 docker-ce-selinux-17.03.3.ce-1.el7.noarch.rpm

安裝17.03版本的docker:

[root@jamza_vm_slave_litepaas app]# yum install docker-ce-selinux-17.03.3.ce-1.el7.noarch.rpm
[root@jamza_vm_slave_litepaas app]# yum install docker-ce-17.03.3.ce-1.el7.x86_64.rpm

檢查docker版本信息:

[root@jamza_vm_slave_litepaas app]# docker -v
Docker version 17.03.3-ce, build e19b718
[root@jamza_vm_slave_litepaas app]#

出現Is the docker daemon running?錯誤時,需重新啓動docker:

[root@jamza_vm_slave_litepaas app]# docker images
Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
[root@jamza_vm_slave_litepaas app]#
[root@jamza_vm_slave_litepaas app]# systemctl daemon-reload
[root@jamza_vm_slave_litepaas app]# systemctl restart docker
[root@jamza_vm_slave_litepaas app]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
busybox/x86_64      latest              3a093384ac30        6 months ago        1.2 MB
tulip               base                e2bae2b5d890        18 months ago       25.4 MB
registry            2.6.2               d1fd7d86a825        18 months ago       33.3 MB
registry            latest              d1fd7d86a825        18 months ago       33.3 MB
[root@jamza_vm_slave_litepaas app]#

在swarm中自定義網絡實現docker跨主機通信

當前環境創建swarm,將主控、備控、線卡虛擬機均加入到swarm中,其中主控虛擬機作爲管理節點,備控與線卡虛擬機作爲工作節點。

[root@jamza_vm_master_litepaas master]# docker node ls
ID                           HOSTNAME                  STATUS  AVAILABILITY  MANAGER STATUS
223cec79gjydf7pxqts9gn098    jamza_vm_lp0_litepaas     Ready   Active
3d1i3ammfohefre5fvtma90en    jamza_vm_slave_litepaas   Ready   Active
8g9b2wnb82wno5gkx60fdli9h *  jamza_vm_master_litepaas  Ready   Active        Leader
[root@jamza_vm_master_litepaas master]#

在創建自定義網絡之前,系統環境中的網絡爲:

[root@jamza_vm_master_litepaas ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
0c957ecc885b        bridge              bridge              local
a90e19dd9f74        docker_gwbridge     bridge              local
032c767b11de        host                host                local
d63876ae0ok1        ingress             overlay             swarm
cad8d79e6d05        none                null                local
[root@jamza_vm_master_litepaas ~]#

創建自定義的網絡模式,其中參數–attachable表示運行docker run、docker create等方式創建的容器接入SCOPE爲swarm類型的網絡。此項參數是從docker的1.13.0版本開始支持,低於此版本的docker不支持該選項:

[root@jamza_vm_master_litepaas ~]# docker network create --driver overlay --subnet 10.83.83.0/24 --attachable mynet
m0tshnpaclxk5ogm0iwq1b715
[root@jamza_vm_master_litepaas ~]#
[root@jamza_vm_master_litepaas ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
0c957ecc885b        bridge              bridge              local
a90e19dd9f74        docker_gwbridge     bridge              local
032c767b11de        host                host                local
d63876ae0ok1        ingress             overlay             swarm
m0tshnpaclxk        mynet               overlay             swarm
cad8d79e6d05        none                null                local

在當前主控虛擬機環境創建容器實例,選定網絡爲自定義的網絡mynet,創建後,容器eth0的ip地址爲10.83.83.2。

[root@jamza_vm_master_litepaas ~]# docker run -it --name=master --net=mynet busybox/x86_64:latest /bin/sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:0A:53:53:02
          inet addr:10.83.83.2  Bcast:0.0.0.0  Mask:255.255.255.0
          inet6 addr: fe80::42:aff:fe53:5302/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1
          RX packets:10 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:836 (836.0 B)  TX bytes:508 (508.0 B)

eth1      Link encap:Ethernet  HWaddr 02:42:AC:12:00:03
          inet addr:172.18.0.3  Bcast:0.0.0.0  Mask:255.255.240.0
          inet6 addr: fe80::42:acff:fe12:3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:508 (508.0 B)  TX bytes:508 (508.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ #

在備控虛擬機環境,使用命令查看當前的網絡節點信息,雖然備控虛擬機已經加入swarm中,但是備控環境沒有任何服務接入在主控環境創建的mynet網絡,因此mynet網絡信息沒有被同步到備控環境。

[root@jamza_vm_slave_litepaas app]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
e6a5ae4496bf        bridge              bridge              local
5f9775ebf382        docker_gwbridge     bridge              local
a20b3d67c74d        host                host                local
d63876ae0ok1        ingress             overlay             swarm
d8bdffcb4f6e        none                null                local
[root@jamza_vm_slave_litepaas app]#

在備控環境創建容器實例,並將容器實例的網絡設置爲自定義的網絡mynet,創建容器後,mynet網絡信息被同步到備控環境中,在備控環境中創建的容器實例的ip地址爲10.83.83.3:

[root@jamza_vm_slave_litepaas app]# docker run -it --name=slave --net=mynet busybox/x86_64:latest /bin/sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:0A:53:53:03
          inet addr:10.83.83.3  Bcast:0.0.0.0  Mask:255.255.255.0
          inet6 addr: fe80::42:aff:fe53:5303/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1
          RX packets:11 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:926 (926.0 B)  TX bytes:508 (508.0 B)

eth1      Link encap:Ethernet  HWaddr 02:42:AC:12:00:03
          inet addr:172.18.0.3  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe12:3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:508 (508.0 B)  TX bytes:508 (508.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ #

現在顯示備控環境中的網絡列表,顯示出在主控創建的mynet網絡被同步到備控環境中:

[root@jamza_vm_slave_litepaas ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
e6a5ae4496bf        bridge              bridge              local
5f9775ebf382        docker_gwbridge     bridge              local
a20b3d67c74d        host                host                local
d63876ae0ok1        ingress             overlay             swarm
m0tshnpaclxk        mynet               overlay             swarm
d8bdffcb4f6e        none                null                local
[root@jamza_vm_slave_litepaas ~]#

同理,在線卡虛擬機環境中,網絡列表中沒有主控創建的mynet網絡:

[root@jamza_vm_lp0_litepaas ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
f75b9419ca5a        bridge              bridge              local
14cfb5ff29cb        docker_gwbridge     bridge              local
a20b3d67c74d        host                host                local
d63876ae0ok1        ingress             overlay             swarm
d8bdffcb4f6e        none                null                local
[root@jamza_vm_lp0_litepaas ~]#

在線卡虛擬機環境創建容器實例,並設置其網絡爲主控創建的mynet網絡,線卡虛擬機環境容器實例的ip地址爲10.83.83.4:

[root@jamza_vm_lp0_litepaas ~]# docker run -it --name=lp --net=mynet busybox/x86_64:latest /bin/sh
/ # ifconfig
eth0      Link encap:Ethernet  HWaddr 02:42:0A:53:53:04
          inet addr:10.83.83.4  Bcast:0.0.0.0  Mask:255.255.255.0
          inet6 addr: fe80::42:aff:fe53:5304/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1450  Metric:1
          RX packets:11 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:926 (926.0 B)  TX bytes:508 (508.0 B)

eth1      Link encap:Ethernet  HWaddr 02:42:AC:12:00:03
          inet addr:172.18.0.3  Bcast:0.0.0.0  Mask:255.255.0.0
          inet6 addr: fe80::42:acff:fe12:3/64 Scope:Link
          UP BROADCAST RUNNING MULTICAST  MTU:1500  Metric:1
          RX packets:6 errors:0 dropped:0 overruns:0 frame:0
          TX packets:6 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:0
          RX bytes:508 (508.0 B)  TX bytes:508 (508.0 B)

lo        Link encap:Local Loopback
          inet addr:127.0.0.1  Mask:255.0.0.0
          inet6 addr: ::1/128 Scope:Host
          UP LOOPBACK RUNNING  MTU:65536  Metric:1
          RX packets:0 errors:0 dropped:0 overruns:0 frame:0
          TX packets:0 errors:0 dropped:0 overruns:0 carrier:0
          collisions:0 txqueuelen:1
          RX bytes:0 (0.0 B)  TX bytes:0 (0.0 B)

/ #

現在顯示線卡環境中的網絡列表,顯示出在主控創建的mynet網絡被同步到線卡環境中:

[root@jamza_vm_lp0_litepaas ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
f75b9419ca5a        bridge              bridge              local
14cfb5ff29cb        docker_gwbridge     bridge              local
a20b3d67c74d        host                host                local
d63876ae0ok1        ingress             overlay             swarm
m0tshnpaclxk        mynet               overlay             swarm
d8bdffcb4f6e        none                null                local
[root@jamza_vm_lp0_litepaas ~]#

經過以上的配置,主控虛擬機環境中的容器實例ip地址爲10.83.83.2,備控虛擬機環境中的容器實例ip地址爲10.83.83.3,線卡虛擬機環境中的容器實例ip地址爲10.83.83.4,經過測試,三個ip地址互相能夠ping通,即實現了借用swarm的網絡功能實現跨主機docker通信。

/ #
/ # ping 10.83.83.2
PING 10.83.83.2 (10.83.83.2): 56 data bytes
64 bytes from 10.83.83.2: seq=0 ttl=64 time=0.450 ms
64 bytes from 10.83.83.2: seq=1 ttl=64 time=0.555 ms
64 bytes from 10.83.83.2: seq=2 ttl=64 time=0.573 ms
64 bytes from 10.83.83.2: seq=3 ttl=64 time=0.464 ms
64 bytes from 10.83.83.2: seq=4 ttl=64 time=0.588 ms
64 bytes from 10.83.83.2: seq=5 ttl=64 time=0.497 ms
64 bytes from 10.83.83.2: seq=6 ttl=64 time=0.459 ms
64 bytes from 10.83.83.2: seq=7 ttl=64 time=0.647 ms
^C
--- 10.83.83.2 ping statistics ---
8 packets transmitted, 8 packets received, 0% packet loss
round-trip min/avg/max = 0.450/0.529/0.647 ms
/ #
/ #
/ # ping 10.83.83.3
PING 10.83.83.3 (10.83.83.3): 56 data bytes
64 bytes from 10.83.83.3: seq=0 ttl=64 time=0.524 ms
64 bytes from 10.83.83.3: seq=1 ttl=64 time=0.759 ms
64 bytes from 10.83.83.3: seq=2 ttl=64 time=1.000 ms
64 bytes from 10.83.83.3: seq=3 ttl=64 time=0.525 ms
64 bytes from 10.83.83.3: seq=4 ttl=64 time=0.541 ms
64 bytes from 10.83.83.3: seq=5 ttl=64 time=0.459 ms
64 bytes from 10.83.83.3: seq=6 ttl=64 time=0.458 ms
^C
--- 10.83.83.3 ping statistics ---
7 packets transmitted, 7 packets received, 0% packet loss
round-trip min/avg/max = 0.458/0.609/1.000 ms
/ #

10.83.83.3 (10.83.83.3): 56 data bytes
64 bytes from 10.83.83.3: seq=0 ttl=64 time=0.524 ms
64 bytes from 10.83.83.3: seq=1 ttl=64 time=0.759 ms
64 bytes from 10.83.83.3: seq=2 ttl=64 time=1.000 ms
64 bytes from 10.83.83.3: seq=3 ttl=64 time=0.525 ms
64 bytes from 10.83.83.3: seq=4 ttl=64 time=0.541 ms
64 bytes from 10.83.83.3: seq=5 ttl=64 time=0.459 ms
64 bytes from 10.83.83.3: seq=6 ttl=64 time=0.458 ms
^C
— 10.83.83.3 ping statistics —
7 packets transmitted, 7 packets received, 0% packet loss
round-trip min/avg/max = 0.458/0.609/1.000 ms
/ #












發佈了68 篇原創文章 · 獲贊 4 · 訪問量 9144
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章