Docker overlay 網絡搭建

Docker overlay 網絡搭建

Overlay網絡是指經過在現有網絡上疊加一個軟件定義的邏輯網絡,最大程度的保留原有網絡,經過定義其上的邏輯網絡,實現業務邏輯,解決原有數據中心的網絡問題。

快速開始

Docker跨主機網絡方案

  • docker 原生node

    • overlay
    • macvlan
  • 第三方方案docker

    • flannel
    • weave
    • calico

以前介紹了Consul搭建集羣,因此在此直接選用docker自帶的overlay方案來作,和Consul完美結合。bootstrap

環境準備

參考以前的一篇《Consul 搭建集羣》準備三臺虛機。網絡

ip
n1 172.20.20.10
n2 172.20.20.11
n3 172.20.20.12

在這三臺虛機上啓動consul並建立集羣ui

n1命令行

[root@n1 vagrant]# consul agent -server -bootstrap-expect 3 -data-dir /etc/consul.d -node=node1 -bind=172.20.20.10 -ui -client 0.0.0.0

n2vagrant

[root@n2 vagrant]# consul agent -server -bootstrap-expect 3 -data-dir /etc/consul.d -node=node2 -bind=172.20.20.11 -ui -client 0.0.0.0 -join 172.20.20.10

n3code

[root@n3 vagrant]# consul agent -server -bootstrap-expect 3 -data-dir /etc/consul.d -node=node3 -bind=172.20.20.12 -ui -client 0.0.0.0 -join 172.20.20.10
[root@n1 vagrant]# consul members
Node   Address            Status  Type    Build  Protocol  DC   Segment
node1  172.20.20.10:8301  alive   server  1.1.0  2         dc1  <all>
node2  172.20.20.11:8301  alive   server  1.1.0  2         dc1  <all>
node3  172.20.20.12:8301  alive   server  1.1.0  2         dc1  <all>

配置 docker

登陸n1
修改 /etc/sysconfig/docker-networkserver

# /etc/sysconfig/docker-network
DOCKER_NETWORK_OPTIONS=--cluster-store=consul://172.20.20.10:8500 --cluster-advertise=172.20.20.10:2376

其中ip部分爲consul容器節點的ip。ip

在命令行中輸入 docker network create -d overlay myoverlay建立一個名爲myoverlay的網絡,並用 docker network ls檢查docker網絡列表

[root@n1 sysconfig]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
5a8df7650e34        bridge              bridge              local
8e574df4fb90        docker_gwbridge     bridge              local
d69aab5b2621        host                host                local
7301c62bca4d        none                null                local
[root@n1 sysconfig]# docker network create -d overlay myoverlay
36feac75fb49edcf8920ed39109424b833501268942fb563708aa306fccfb15c
[root@n1 sysconfig]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
5a8df7650e34        bridge              bridge              local
8e574df4fb90        docker_gwbridge     bridge              local
d69aab5b2621        host                host                local
36feac75fb49        myoverlay           overlay             global
7301c62bca4d        none                null                local

登陸 n2
修改 /etc/sysconfig/docker-network

# /etc/sysconfig/docker-network
DOCKER_NETWORK_OPTIONS=--cluster-store=consul://172.20.20.11:8500 --cluster-advertise=172.20.20.11:2376

這裏不用再次新創建myoverlay網絡了,由於他們是一個集羣。直接檢查網絡列表

[root@n2 vagrant]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
9f2b7d40a69f        bridge              bridge              local
1d9ee9546c81        docker_gwbridge     bridge              local
e1f72fa7710c        host                host                local
36feac75fb49        myoverlay           overlay             global
372109bb13bc        none                null                local

發現myoverlay已經在其中。

同理操做n3

[root@n3 vagrant]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
14cf16d37c9b        bridge              bridge              local
ca426545fedb        docker_gwbridge     bridge              local
b57d2f555fa2        host                host                local
36feac75fb49        myoverlay           overlay             global
fcb5da0380e4        none                null                local

啓動容器 驗證overlay網絡

登陸n1以myoverlay啓動一個busybox的容器

[root@n1 sysconfig]# docker run --network myoverlay busybox

查看busybox容器詳情,在最底部有網絡相關的信息

"Networks": {
                "myoverlay": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "e7d558b35607"
                    ],
                    "NetworkID": "36feac75fb49edcf8920ed39109424b833501268942fb563708aa306fccfb15c",
                    "EndpointID": "6b1c975847b506a151940893e3ac189a7053cb34dda4ec2b5797c93f6eeb3534",
                    "Gateway": "",
                    "IPAddress": "10.0.0.2",
                    "IPPrefixLen": 24,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:0a:00:00:02"
                }
            }

能夠看到網絡是myoverlay ip 爲 10.0.0.2

登陸n2myoverlay啓動一個busybox的容器

[root@n2 sysconfig]# docker run --network myoverlay busybox

查看busybox容器詳情,在最底部有網絡相關的信息

"Networks": {
                "myoverlay": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "f673ccb5ab32"
                    ],
                    "NetworkID": "36feac75fb49edcf8920ed39109424b833501268942fb563708aa306fccfb15c",
                    "EndpointID": "39f8e9e098ce3faf039aa60e275ec90428f86c6378f5b4c54d8682741e71673f",
                    "Gateway": "",
                    "IPAddress": "10.0.0.3",
                    "IPPrefixLen": 24,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:0a:00:00:03"
                }
            }

這個busybox的ip爲10.0.0.3

進入容器,ping 10.0.0.2

[root@n2 vagrant]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                                  NAMES
f673ccb5ab32        busybox             "sh"                     2 minutes ago       Up 2 minutes                                                               objective_pare
[root@n2 vagrant]# docker exec -ti f673ccb5ab32 /sh
/ # ping 10.0.0.2
PING 10.0.0.2 (10.0.0.2): 56 data bytes
64 bytes from 10.0.0.2: seq=0 ttl=64 time=1.309 ms
64 bytes from 10.0.0.2: seq=1 ttl=64 time=0.535 ms
64 bytes from 10.0.0.2: seq=2 ttl=64 time=1.061 ms
64 bytes from 10.0.0.2: seq=3 ttl=64 time=0.764 ms
^C
--- 10.0.0.2 ping statistics ---
4 packets transmitted, 4 packets received, 0% packet loss
round-trip min/avg/max = 0.535/0.917/1.309 ms

ping 是通的, overlay 網絡搭建成功!

相關文章
相關標籤/搜索