概述
使用Docker的swarm模式,需要安裝Docker的1.12.0或者更新的版本。
swarm的特點包括:
- 集成進Docker引擎;
- 去中心化設計;
- 可縮放擴展;
- 狀態監控;
- 跨主機通信;
- 負載均衡;
- 安全;
- 滾動升級。
基本概念
節點
運行Docker的主機可以主動初始化一個swarm集羣,或者加入一個已經存在的swarm集羣,這樣這個運行Docker的主機就成爲一個swarm集羣的節點(node)。
節點可以分爲管理節點和工作節點:
- 管理節點:用於swarm集羣管理的節點,一個swarm集羣可以有多個管理節點,但是隻有一個管理節點可以成爲leader,leader通過raft協議實現。
- 工作節點:任務執行的節點,管理節點將服務(service)下發至工作節點執行。管理節點默認也可以爲工作節點。
服務和任務
任務(task)是swarm中最小的調度單位,目前來說是單一的容器。
服務(services)是指一組任務的集合,服務定義了任務的屬性。服務包括兩種模式:
- replicated services,按照一定的規則在各個工作節點上運行指定數量的任務;
- 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
/ #