Docker 网络及原理探究
个人观点:Docker 网络通信在容器编排、集群部署中具有举足轻重的地位,(玩 docker 不懂 docker0 那就......玩不透哇👀)本篇分析 Docker 网络,并通过启动几个容器来探究 Docker 网络及容器通信,帮助读者理解一下😊。
1、Docker0
Docker 服务默认会创建一个 docker0 网桥(其上有一个 docker0 内部接口),它在内核层连通了其他的物理或虚拟网卡,这就将所有容器和本地主机都放到同一个物理网络。
Docker 默认指定了 docker0 接口 的 IP 地址和子网掩码,让主机和容器之间可以通过网桥相互通信,它还给出了 MTU(接口允许接收的最大传输单元),通常是 1500 Bytes,或宿主主机网络路由上支持的默认值。这些值都可以在服务启动的时候进行配置。
2、清空所有镜像
如果是初学者,还不是很了解 docker0 的情况下,建议清空所有镜像,创造一个比较干净的容器网络环境,更加清晰,有助于学习 docker0😃
查看运行的容器
docker ps
停掉所有正在运行的容器(否则删除不掉)
docker stop [containerID] # docker stop $(docker container ls -q)
执行删除
docker rmi -f $(docker images -aq)
查看镜像
docker images
3、查看网卡信息
先了解一下
ip addr
命令
ip addr
lo # 本机回环地址 127.0.0.1
eth0 # 阿里云内网地址 172.31.81.32
docker0 # docker 生成的网卡 172.17.0.1
获取当前网卡 ip 地址和 mac 地址
下面通过 docker 启动几个容器来探究一下 Docker 网络👇
4、运行容器之后,再次查看网卡信息
安装 Docker 时,它会自动创建三个网络,默认bridge
网桥(创建容器默认连接到此网络)、 none
、host
4.1、运行mysql01
, centos01
, centos02
容器
启动时,docker 默认的 bridge 网桥,docker0 给容器服务自动分配 ip
4.2、查看 ip、mac 地址信息
可以看到上面启动的三个容器服务的
mac
信息
ip addr
4.3、查看 docker 网络
docker network ls
4.4、查看默认 bridge 网桥(docker0)
ocker network inspect
4.5、测试容器通信
此时,进入
centos01
容器,ping
mysql 容器的ip
可以 ping 通,但是 ping 不通容器名 ❗
如下图👇
5、容器通信原理
只要我们安装了 docker,就会有一个网卡 docker0(相当于一个路由器),每启动一个 docker 容器,docker 都会给 docker 容器分配一个 ip(连接路由器的终端,同一网段下终端可以互相通信),
通过
evth-pair
技术实现,evth-pair
就是一对虚拟设备接口,他们都是成对出现的,一端连着协议,一端彼此相连,evth-pair
充当一个桥梁,连接各种虚拟网络设备。Docker 网络使用的是
Linux桥接
,宿主机是 docker 容器的网桥,docker0,最多分配 65535 个删除容器之后,虚拟网卡就自动消失了。(虚拟网卡传递效率高!)
启动容器不设置网络,容器 ip 由 docker0 自动分配情况下,容器间的通信,要经过evth-pair
技术实现,并不是直连的。(跟计算机网络通信类似,分层模型,TCP/IP 协议数据报封装解封装)
5.1、结论
tomcat01
,tomcat02
是共用的一个路由器,docker0所有的容器启动时,如果不指定网络的情况下,都是 docker0 路由的。65535
最后
上面docker0
不支持容器名连接访问,容器通信只可以通过容器ip
通信,docker 也无法保证容器重启后的 IP 地址不变,所以更好的方式是通过别名进行互联,下篇继续讲解怎么通过别名进行容器通信,😊😊。
我是 甜点cc
热爱前端,也喜欢专研各种跟本职工作关系不大的技术,技术、产品兴趣广泛且浓厚,等待着一个创业机会。本号主要致力于分享个人经验总结,希望可以给一小部分人一些微小帮助。
希望能和大家一起努力营造一个良好的学习氛围,为了个人和家庭、为了我国的互联网物联网技术、数字化转型、数字经济发展做一点点贡献。数风流人物还看中国、看今朝、看你我。
版权声明: 本文为 InfoQ 作者【甜点cc】的原创文章。
原文链接:【http://xie.infoq.cn/article/bd264f60e36479a3faf206020】。
本文遵守【CC-BY 4.0】协议,转载请保留原文出处及本版权声明。
评论