Docker学习笔记(五)Docker跨主机网络--overlay方案

本文详细介绍了如何在Docker环境中搭建Overlay网络,包括实验环境的准备、Consul配置、网络创建与容器通信等内容,深入解析了跨主机通信原理及网络隔离配置。

Docerk overlay 网络需要一个 key-value 数据库用于保存网络状态信息,包括 Network、Endpoint、IP 等。Consul、Etcd 和 ZooKeeper 都是 Docker 支持的 key-vlaue 软件,我们这里使用 Consul。

一、准备实验环境:

搭建实验环境:

主机名 系统 内核版本 IP
master CentOS7 kernel-5.2.11 10.1.1.17
node1 CentOS7 kernel-5.2.11 10.1.1.13
node2 CentOS7 kernel-5.2.11 10.1.1.14

如果内核版本低于kernel-3.18,实验很大可能会失败,所以建议升级Linux的系统内核,具体步骤如下:
导入key

rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org

如果你修改了repo的gpgcheck=0也可以不导入key

安装elrepo的yum源

rpm -Uvh http://www.elrepo.org/elrepo-release-7.0-2.el7.elrepo.noarch.rpm

安装内核
在yum的ELRepo源中,有mainline(3.18.3)这个内核版本

yum --enablerepo=elrepo-kernel install  kernel-ml-devel kernel-ml -y

选择了使用新安装的repo来安装内核,如果使用其他的repo,看不到3.18版本内核

更新后查看内核版本

[root@ip-10-10-17-4 tmp]# uname -r
3.10.0-123.el7.x86_64

重要:目前内核还是默认的版本,如果在这一步完成后你就直接reboot了,重启后使用的内核版本还是默认的3.10,不会使用新的内核,想修改启动的顺序,需要进行下一步
查看默认启动顺序:

awk -F\' '$1=="menuentry " {print $2}' /etc/grub2.cfg
CentOS Linux (3.18.3-1.el7.elrepo.x86_64) 7 (Core)
CentOS Linux, with Linux 3.10.0-123.el7.x86_64
CentOS Linux, with Linux 0-rescue-893b160e363b4ec7834719a7f06e67cf

默认启动的顺序是从0开始,但我们新内核是从头插入(目前位置在0,而3.10的是在1),所以需要选择0,如果想生效最新的内核,需要执行:
grub2-set-default 0

然后reboot重启,使用新的内核,下面是重启后使用的内核版本

[root@ip-10-10-17-4 tmp]# uname -r
Kernel 5.22

二、配置consul环境

首先在docker部署支持的组件,比如Consul,最简单的方法是以容器的方式运行Consul:

[root@localhost ~]#
[root@localhost ~]# docker run -d -p 8500:8500 -h consul --name consul progrium/consul -server -bootstrap

Consul容器启动完成后,可以通过10.1.1.17:8500访问Consul:

修改完后,需要重启。

接下来修改docker daemon的配置文件,CentOS7环境下docker的daemon文件在/usr/lib/systemd/system/docker.service:
先修改master的配置文件,添加以下内容:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --cluster-store=consul://192.168.1.4:8500 --cluster-advertise=ens33:2376

修改node1文件,添加以下内容:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --cluster-store=consul://192.168.1.4:8500 --cluster-advertise=ens33:2376

修改node2文件,添加以下内容:

ExecStart=/usr/bin/dockerd -H fd:// --containerd=/run/containerd/containerd.sock --cluster-store=consul://192.168.1.4:8500 --cluster-advertise=ens33:2376

然后master、node1和node2,均执行以下命令:

[root@localhost ~]# systemctl daemon-reload
[root@localhost ~]# systemctl restart docker

上面重启docker服务的时候,master上面的consul容器也会被停掉,所以这里要记得把master节点上的容器consul拉起来:

docker start consul

打开http://10.1.1.17:8500/ui/#/dc1/kv/docker/nodes/,可以看到node1和node2节点已经注册到consul上:
在这里插入图片描述

三、创建overlay网络:

创建网络:

[root@localhost ~]# docker network create --driver overlay overlay_net1
406055e7a5b56511a6b7e021fef688a69d262fa3112094d43b4bdbea2eceda09
[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
afe6548e7c82        bridge              bridge              local
2ca6a9334230        host                host                local
467bdef50c36        none                null                local
406055e7a5b5        overlay_net1        overlay             global

在node1上查看存在的网络:

[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
2ff0c772489f        bridge              bridge              local
5a657b6beb24        host                host                local
e69a4839e6c6        none                null                local
406055e7a5b5        overlay_net1        overlay             global

在node2上查看存在的网络:

[root@localhost ~]# docker network ls
NETWORK ID          NAME                DRIVER              SCOPE
1b6bc781
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Dustin.Hoffman

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值