记录 Docker 的学习过程 (网络篇之跨主机互通)
下面从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 的学习过程 (网络篇之跨主机互通)的更多相关文章
- docker之 网络模式和跨主机通信
Docker的四种网络模式Bridge模式 当Docker进程启动时,会在主机上创建一个名为docker0... Docker的四种网络模式 Bridge模式 当Docker进程启动时,会在主机上创建 ...
- Docker 网络模式和跨主机通信
Docker的四种网络模式 Bridge模式 当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上.虚拟网桥的工作方式和物理交 ...
- 一分钟看懂Docker的网络模式和跨主机通信
文章转载自:http://www.a-site.cn/article/169899.html Docker的四种网络模式Bridge模式 当Docker进程启动时,会在主机上创建一个名为docke ...
- Docker的网络模式和跨主机通信
文章转载自:http://www.a-site.cn/article/169899.html Docker的四种网络模式Bridge模式 当Docker进程启动时,会在主机上创建一个名为docke ...
- 记录 Docker 的学习过程 (网络篇)
打开2个会话,分别运行以下命令 # docker run -it -P --name nginx2 nginx #-P 端口随机映射 再打开一个会话查看 运行中的容器 # docker ps -aCO ...
- 记录 Docker 的学习过程 (日志篇)
日志收集 elk 在node3上操作 docker pull sebp/elk:5610 node3# sysctl vm.max_map_count=262144 node3# docker run ...
- 记录 Docker 的学习过程 (安装基础篇)
docker 通过内核来实现 特点是效率高 1. centos7 三台(推荐2c 4g 最低 1c1g)2. 关闭防火墙 selinux3. 做好主机名解析,三台能互相ping通主机名host参考文件 ...
- 记录 Docker 的学习过程 (数据挂载)
docker 存储篇 容器中的存储是分层的, 在容器中,如果我们要创建一个文件,会在文件的最上层(可写层)创建 容器中内置的文件,默认来讲是只读的,只有自己创建的文件才是可写状态 比如说 /etc/p ...
- 记录 Docker 的学习过程 (自建私有仓库)
私有仓库的创建 node1#wget http://harbor.orientsoft.cn/harbor-v1.4.0/harbor-offline-installer-v1.4.0.tgz nod ...
随机推荐
- ABP框架迁移到Mysql
ABP框架 .NetCore3.x版本 1.首先找到xxx.Core 项目,添加引用Microsoft.EntityFrameworkCore.Tools 2.找到xxx.EntityFramewor ...
- 微信小程序入门笔记-账号注册(1)
小程序注册 微信小程序开发之前,必须先有小程序账号,下面是注册步骤: 1.打开网页 微信公众平台https://mp.weixin.qq.com/,点击立即注册按钮 2.注册类型 选择小程序开发 3. ...
- Zookeeper分布式协调即分布式锁机制
主要用到的Zookeeper机制: 临时+有序节点,节点watch机制 过程: 发生分布式锁竞争时,参与竞争的各个客户端服务都到Zookeeper的同一父节点(代表着同一把锁)下建立自己的临时+有序子 ...
- mybatis实体为什么要提供一个无参的构造函数
提问:Mybatis查询结果映射到实体类的时候,实体类为什么必须有一个空的构造函数? 类中如果没有构造函数,隐藏是无参构造函数,方便实体类需要通过Mybatis进行动态反射生成.如果实体类中一旦声明构 ...
- PHP0026:PHP 博客项目开发3
- SpringBoot缓存 --(二)Redis单机缓存
pom.xml <dependency> <groupId>org.springframework.boot</groupId> <artifactId> ...
- 02-flink时间语义 与 Window 基础概念与实现原理
Flink 多种时间语义对比 Flink 在流应用程序中支持不同的 Time 概念,就比如有 Processing Time.Event Time 和 Ingestion Time.下面我们一起来看看 ...
- go 网络编程
网络编程 tcp 1.tcp客户端服务端实现 server/server.go package main import ( "fmt" "net" ) /* t ...
- es5和es6创建新数组的方法
//es5 let array = Array(5) let array = [] //es6 1.let array = Array.of(1,2,3,4,5) 2.let array = Arra ...
- 小程序上拉触底&下拉加载
data: { pageNo: 1,//当前页 pageSize: 10,//每页条数 count:'',//总条数 orderList: [], }, onLoad: function () { v ...