今天给大家介绍docker的网络知识,欢迎大家互相交流学习!
1、docker网络介绍
当我们的服务器成功安装docker并启动进程后,就会产生一个docker0的虚拟网桥,本质为Linux网桥(默认为桥接模式),使用的通信技术是Veth-pair技术.
当我们每启动一个容器,docker就给对应容器分配一个eth0,并能够桥接到docker0网卡。这个时候可以把docker0看作为路由器,每个容器可以看作为连接路由器的网络设备,docker0用来管理每个容器的和docker0通信的映射关系。
查看网络信息
代码语言:javascript复制ip addr
具体如下图
lo:表示本地回环地址
dockers0:表示docker容器安装自动产生的docker0地址。
2、测试容器和宿主主机的通信
2.1 宿主主机可以ping通 docker0
代码语言:javascript复制 ping 172.17.0.1
执行效果如下图
2.2 容器内部ping宿主主机也可以ping通
ping 192.168.0.116
2.3 dockers中nginx解决没有ping命令的问题
大家如果安装的nginx没有ping命令的话,可以采用下面的两条命令安装ping。
代码语言:javascript复制apt-get update #获取更新软件源
代码语言:javascript复制apt install iputils-ping #安装ping命令
2.4 容器之间也可以互相ping通
代码语言:javascript复制-- 获取docker所有容器的IP地址
docker inspect -f '{{.Name}} - {{.NetworkSettings.IPAddress }}' $(docker ps -aq)
nginxtest 容器内IP是 172.17.05
nginxtest02 容器内IP是 172.17.06
测试一下是否能够ping通
nginxtest ping nginxtest02
代码语言:javascript复制docker exec -it nginxtest /bin/bash
ping 172.17.0.6
nginxtest02 ping nginxtest
代码语言:javascript复制docker exec -it nginxtest02 /bin/bash
ping 172.17.0.5
3、evth-pair技术简介
evth-pair就是一对虚拟设备接口,它们都是成对出现的,一端连着协议,一端彼此相连,所以可以通信。evth-pair可以充当一个桥梁。
4、Docker网络总结
Docker 使用的是Liunx的桥接原理,宿主机中是一个Docker容器的网桥 docker0。Docker 中所有的网络接口的是虚拟的,虚拟的转发效率高,
docker容器网桥的生成周期:docker容器删除,对应的一对网桥就没了。