Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信

Docker 提供三种 user-defined 网络驱动:bridge, overlay 和 macvlan
overlay 和 macvlan 用于创建跨主机的网络

1.搭建实验环境

上一篇我们演示docker原生网络的时候用来一台宿主机server1
接下来的自定义网络需要再开启一台宿主机server2

(1)在真机中创建一个快照并且导入镜像开启server2
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第1张图片
(2)用真机连接server2
server2:172.25.2.2
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第2张图片
(3)同理,给server2配置网络yum源,并且安装docker服务
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第3张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第4张图片
(4)从真机给server2传镜像
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第5张图片
(5)导入镜像并且查看
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第6张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第7张图片
实验环境搭建完毕,接下来使用server1和server2做实验

2.自定义网络的演示

自定义网络需要使用create命令,先来看看create命令可以跟哪些参数
刚才原生网络不存在域名解析,但是自定义网络存在域名解析
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第8张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第9张图片
(1)bridge模式
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第10张图片
创建自定义的bridge网络并且查看
创建一个bridge模式的网络
由上图我们可以看到创建的网络ID ,使用ip addr查看本机网络:
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第11张图片
运行容器vm1并且指定网络模式为刚才自定义的bridge模式
可以看到ip地址和宿主机的ip不在一个网段
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第12张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第13张图片
再运行一个容器,发现ip地址也是递增的,并且容器之间具有域名解析,可以ping通
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第14张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第15张图片
清理一下实验环境
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第16张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第17张图片
发现自定义网络的ip会出现在宿主机上面
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第18张图片
自定义的bridge模式也可以自己指定ip网段和网段
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第19张图片
查看一下刚才自定义的网络my_net1和my_net2
my_net1的网段没有指定,那就是以宿主机桥接的网段为基础递增的
查看docker自定义网络如下图,当我们创建好自定义网络后,自定义为其分配IP网段和网关。

docker的bridge自定义网络之间默认是有域名解析的;
docker的bridge自定义网络与系统自带的网桥之间默认是有解析的;
但是docker的系统自带的网桥之间默认是没有解析的。

在这里插入图片描述
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第20张图片
my_net2的网段是自己指定的,随意,只要不冲突即可
再创建一个bridge的网络,自定义ip和网关
在这里插入图片描述
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第21张图片
此时又发现宿主机的私有网段又多了一个
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第22张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第23张图片
运行容器的时候可以指定ip
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第24张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第25张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第26张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第27张图片
此时在一个网段的容器仍然可以ping通
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第28张图片
刚才在以my_net2为基础运行了两个容器vm1和vm2,网段是172.20.0,可以互相ping通
接下来在以my_net1为基础运行两个容器vm3和vm4,网段是172.18.0,也可以互相ping通
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第29张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第30张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第31张图片
发现vm1、vm2和vm3、vm4ping不通
因为在宿主机上定义的两个网络my_net1和my_net2就不在一个网段
因此基于这两种网络运行起来的容器肯定ping不通

Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第32张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第33张图片
接下来想实现这两种网络之间的通信(my_net1和my_net2)
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第34张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第35张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第36张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第37张图片
给vm1容器添加一块my_net1的网卡,就可以和mysq_net2容器vm3、vm4进行通信了
建立两个容器之间的连接

Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第38张图片
清理实验环境
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第39张图片
Docker学习(12)——Docker的3种自定义网络(bridge、overlay、macvlan)——自带域名解析——容器间通信_第40张图片

其实上面简单实现了同一宿主机上不同网段容器之间的通信

以上我们实现了:使用自定义网络实现容器间的通信

docker的bridge自定义网络之间:双方可以随便添加对方的网卡
docker的bridge自定义网络与系统自带的网桥之间:只能是,系统自带的网桥对应的容器 添加 bridge自定义网络对应的容器的网卡。而反过来会报错。
但是docker的系统自带的网桥之间:是可以通信的,因为是在一个网络桥接上。
docker 1.10开始,内嵌了一个DNS server。dns解析功能必须在自定义网络中使用。

Docker的3种自定义网络(bridge、overlay、macvlan)
Docker 提供三种 user-defined 网络驱动:bridge, overlay 和 macvlan。
overlay 和 macvlan 用于创建跨主机的网络,后面专门列出来演示

ctrl+p+q,再创建一个容器,使用网络my_net2。
使用–ip参数可以指定容器ip地址,但必须是在自定义网桥上(自定义的ip地址和网关地址),
默认的bridge模式不支持,同一网桥上的容器是可以通信的

你可能感兴趣的:(linux运维——企业实战)