下面从node3上操作
node3# docker run -d -p 8500:8500 --name consul progrium/consul -server -bootstrap

node3# netstat -tnlp
Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name
tcp        0      0 127.0.0.1:25            0.0.0.0:*               LISTEN      949/master
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      866/sshd
tcp6       0      0 ::1:25                  :::*                    LISTEN      949/master
tcp6       0      0 :::8500                 :::*                    LISTEN      2790/docker-proxy
tcp6       0      0 :::22                   :::*                    LISTEN      866/sshd

看到了 8500 已经开启,然后打开浏览器输入以下网址
http://192.168.56.13:8500
发现可以打开,到目前为止,node3的操作就告一段了

下面开始操作node1

node1# vi /etc/docker/daemon.json

修改为下面

{
"registry-mirrors": ["https://a14c78qe.mirror.aliyuncs.com"],
"dns": ["192.168.56.2","8.8.4.4"],
"data-root": "/data/docker",
"cluster-store":"consul://192.168.56.13:8500",
"cluster-advertise":"192.168.56.11:2375"
}

然后记得修改
vi /usr/lib/systemd/system/docker.service
14 行为 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://192.168.56.11
要在node1和node2上都做修改,修改后重启docker服务生效(之前网络篇最后的私有网络通过容器名ping互通的实验,没做成功时是因为修改了此配置,是否跟这个配置有关,后面有时间在

测试)

dockerd --help | grep cluster  可以使用这个命令查看和cluster相关的命令

然后重启服务

node1# systemctl daemon-reload
node1# systemctl restart docker

此时node1操作完成,切换到node2上操作

node2# vi /etc/docker/daemon.json

修改为下面

{
"registry-mirrors": ["https://a14c78qe.mirror.aliyuncs.com"],
"dns": ["192.168.56.2","8.8.4.4"],
"data-root": "/data/docker",
"cluster-store":"consul://192.168.56.13:8500",
"cluster-advertise":"192.168.56.12:2375"
}

然后记得修改
vi /usr/lib/systemd/system/docker.service
14 行为 ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock -H tcp://192.168.56.12

node2# systemctl daemon-reload
node2# systemctl restart docker

node2上操作完成

接下来打开浏览器输入 http://192.168.56.13:8500/ui/#/dc1/kv/docker/nodes/
如果能在左边看到2个节点分别是56.11和56.12则ok

下面切换回node1上操作

node1# docker network create -d overlay ov_net1   #创建一个overlay类型的新网络
dcb8e33bb80fe8cde9212af8c2b9171ac8003d08f020f9dcff5c253de802be5d

node1# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
a068acefb7f1        bridge              bridge              local
b3f8fb0d9f71        host                host                local
202ad8a28eb5        my_net2             bridge              local
2ce830695bd5        none                null                local
dcb8e33bb80f        ov_net1             overlay             global  多了一条全局的网络

下面切换回node2

node2# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
41368417f49e        bridge              bridge              local
f5eb9cdc223d        host                host                local
55280c8579d3        none                null                local
dcb8e33bb80f        ov_net1             overlay             global  看到了刚才创建的全局的overlay网络

下面切换回node1 开始创建主机

node1# docker run  -it --rm --network ov_net1 busybox   
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
21: eth0@if22: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1450 qdisc noqueue
    link/ether 02:42:0a:00:00:02 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.2/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
24: eth1@if25: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.2/16 brd 172.18.255.255 scope global eth1
       valid_lft forever preferred_lft forever
发现多了一块10段的网卡

下面切换到node2

node2# docker run  -it --rm --network ov_net1 busybox
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
6: eth0@if7: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1450 qdisc noqueue
    link/ether 02:42:0a:00:00:03 brd ff:ff:ff:ff:ff:ff
    inet 10.0.0.3/24 brd 10.0.0.255 scope global eth0
       valid_lft forever preferred_lft forever
9: eth1@if10: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:ac:12:00:02 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.2/16 brd 172.18.255.255 scope global eth1
       valid_lft forever preferred_lft forever

发现同样也多了一块10段的网卡

此时 互ping10段ip可以通

但是为何会出现172.18段的网卡呢
此时打开一个会话登录node1上查看

node1# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
a068acefb7f1        bridge              bridge              local
005a2bc2da66        docker_gwbridge     bridge              local
b3f8fb0d9f71        host                host                local
202ad8a28eb5        my_net2             bridge              local
2ce830695bd5        none                null                local
dcb8e33bb80f        ov_net1             overlay             global

多了一条  docker_gwbridge ,每当使用docker创建一个overlay的网络,docker就会自动穿件一个桥接网络 docker_gwbridge (名字不一定就是这个),用于与外界通信

# route -n
Kernel IP routing table
Destination     Gateway         Genmask         Flags Metric Ref    Use Iface
0.0.0.0         172.18.0.1      0.0.0.0         UG    0      0        0 eth1
10.0.0.0        0.0.0.0         255.255.255.0   U     0      0        0 eth0
172.18.0.0      0.0.0.0         255.255.0.0     U     0      0        0 eth1

通过路由表也可以印证这一点

还有就是创建泽中overlay网络时也可以指定子网范围,创建主机时可以指定ip地址

# docker network create -d overlay --subnet 10.10.0.0/16 ov_net2
5a7ade4e6aa4b79ff11f6a179a4a8baa9fa3783e4ab497648202a6e2499cb48e

# docker run -it --rm --network ov_net2 --ip 10.10.0.10 busybox
/ # ip a
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 qdisc noqueue qlen 1000
    link/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
    inet 127.0.0.1/8 scope host lo
       valid_lft forever preferred_lft forever
27: eth0@if28: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1450 qdisc noqueue
    link/ether 02:42:0a:0a:00:0a brd ff:ff:ff:ff:ff:ff
    inet 10.10.0.10/16 brd 10.10.255.255 scope global eth0
       valid_lft forever preferred_lft forever
29: eth1@if30: <BROADCAST,MULTICAST,UP,LOWER_UP,M-DOWN> mtu 1500 qdisc noqueue
    link/ether 02:42:ac:12:00:03 brd ff:ff:ff:ff:ff:ff
    inet 172.18.0.3/16 brd 172.18.255.255 scope global eth1
       valid_lft forever preferred_lft forever

记录 Docker 的学习过程 (网络篇之跨主机互通)的更多相关文章

  1. docker之 网络模式和跨主机通信

    Docker的四种网络模式Bridge模式 当Docker进程启动时,会在主机上创建一个名为docker0... Docker的四种网络模式 Bridge模式 当Docker进程启动时,会在主机上创建 ...

  2. Docker 网络模式和跨主机通信

    Docker的四种网络模式 Bridge模式 当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上.虚拟网桥的工作方式和物理交 ...

  3. 一分钟看懂Docker的网络模式和跨主机通信

    文章转载自:http://www.a-site.cn/article/169899.html   Docker的四种网络模式Bridge模式 当Docker进程启动时,会在主机上创建一个名为docke ...

  4. Docker的网络模式和跨主机通信

    文章转载自:http://www.a-site.cn/article/169899.html   Docker的四种网络模式Bridge模式 当Docker进程启动时,会在主机上创建一个名为docke ...

  5. 记录 Docker 的学习过程 (网络篇)

    打开2个会话,分别运行以下命令 # docker run -it -P --name nginx2 nginx #-P 端口随机映射 再打开一个会话查看 运行中的容器 # docker ps -aCO ...

  6. 记录 Docker 的学习过程 (日志篇)

    日志收集 elk 在node3上操作 docker pull sebp/elk:5610 node3# sysctl vm.max_map_count=262144 node3# docker run ...

  7. 记录 Docker 的学习过程 (安装基础篇)

    docker 通过内核来实现 特点是效率高 1. centos7 三台(推荐2c 4g 最低 1c1g)2. 关闭防火墙 selinux3. 做好主机名解析,三台能互相ping通主机名host参考文件 ...

  8. 记录 Docker 的学习过程 (数据挂载)

    docker 存储篇 容器中的存储是分层的, 在容器中,如果我们要创建一个文件,会在文件的最上层(可写层)创建 容器中内置的文件,默认来讲是只读的,只有自己创建的文件才是可写状态 比如说 /etc/p ...

  9. 记录 Docker 的学习过程 (自建私有仓库)

    私有仓库的创建 node1#wget http://harbor.orientsoft.cn/harbor-v1.4.0/harbor-offline-installer-v1.4.0.tgz nod ...

随机推荐

  1. win10上使用linux命令

    (1)可以用windows自带的powershell,但是 ll,vim等命令不能使用 (2)Windows更新==>针对开发人员==>开启开发人员模式,然后在控制面板==>程序与功 ...

  2. 一招教你用数据可视化BI软件创建网店运营监控大屏

    灯果数据可视化BI软件是新一代人工智能数据可视化大屏软件,内置丰富的大屏模板,可视化编辑操作,无需任何经验就可以创建属于你自己的大屏.大家可以在他们的官网下载软件. 本文以网店运营监控大屏为例为大家演 ...

  3. Python——格式输出,基本数据

    一.问题点(有待解决) 1.Python中只有浮点数,20和20.0是否一样? from decimal import Decimal  a = Decimal('1.3') round() 参考文章 ...

  4. position属性值4缺一带你了解相对还是绝对抑或是固定定位

    阿基米德说“给我一个支点,我能翘起整个地球”,在HTML页面中,给你一个坐标,可以把任何一个元素定位目标点,这就是定位!CSS有三种基本的定位机制:相对定位.绝对定位.固定定位,决定定位的positi ...

  5. iOS 中事件的响应链和传递链

    iOS事件链有两条:事件的响应链:Hit-Testing事件的传递链 响应链:由离用户最近的view向系统传递.initial view –> super view –> ….. –> ...

  6. nginx location展示及文件共享

    nginx 目录展示及文件访问 效果: [外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-d5G9wfKK-1570116907804)(E:\Users\FangJunX ...

  7. 桌面粉笔功能.有window ink功能区开启的快捷键

    功能区开启的快捷键 方法1: win+W唤出工作区,可以直接点击,但是没有快捷键.prtsc是直接截取屏幕(国际通用)然后在画图打开或直接粘贴于某处都可以. 方法2:快捷键是 Windows 徽标键 ...

  8. go 环境及4开发

    国内加速 在gopath目录执行 go env -w GOPROXY=direct go env -w GOSUMDB=off go env -w GOPROXY=https://goproxy.io ...

  9. 工作中遇到的js跨域问题总结

    起因:之前在做一个项目的时候有这样一个问题,127.0.0.1域名上的一个页面A.html,需要访问127.0.0.2域名上B.html页面中的一个方法.这就涉及到JS跨域访问了,通过查阅资料,得以解 ...

  10. css3基础-动画案例(没啥实用性,纯粹好玩的)

    会动的汉克狗: <!doctype html> <html lang="en"> <head> <meta charset="U ...