8、Docker网络
理解Docker0(Docker网络)
网卡有3个,分别代表3种环境。
测试
#拉去镜像并创建容器
docker run -d -P --name tomcat01 tomcat
#查看容器内网卡
docker exec -it tomcat01 ip addr
#Linux可以ping通docker容器内部
原理
- 我们每启动一个docker容器,docker就会给容器分配一个ip;
- 只要安装了docker,就会有一个网卡docker0,是桥接模式,采用veth-pair技术!
veth-pair技术
- 是一对的虚拟设备接口,她们都是成队出现的,一段连着协议,一段彼此相连;
- 充当一个桥梁,连接各种虚拟网络设备
网络模型图
结论
- tomcat01和tomcat02是公用的一个路由器,docker0;
- 所有的容器在不指定网络的情况下,都是docker0路由的,docker会给容器分配一个默认的可用IP;
小结
- docker种的所有的网络接口都是虚拟的,虚拟的转发效率高;
- 容器被删除,对应网桥消失;
8.1 link
docker run -d -P --name tomcat03 --link tomcat02 tomcat #在容器创建的时候link其它容器,解决网络联通问题,可直接通过容器名ping通
探究
docker network inspect #查看docker网络具体信息
link实现的原理:host映射
#查看容器内hosts文件
docker exec -it tomcat02 cat /etc/hosts
不推荐使用**–ink**,推荐使用自定义网络。
docker0问题:不支持容器名的连接访问。
8.2 自定义网络
docker netwok ls #显示所有的docker网络
网络模式
- bridge:桥接(docker默认),在docker上面搭桥。
- none:不配置网络。
- host:和宿主机共享网络。
- container:容器网络连通。
测试
docker run -d -P --name tomcat01 --net bridge tomcat #--net增加网络
#docker0特点,默认,域名不能访问,--link可以打通连接
docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet #创建网络
docker network ls #查看网络
docker network inspect mynet #查看自己的网络
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-rVAST7fw-1591846610594)(http://qiniu.cy-yz.cn/picture/202006/11/092104-719404.png)]
结论
-
自定义的网络docker已经维护好了对应的关系。
-
网络之间隔离,不同集群使用不同网络,保证集群健康。
-
网络之间如何连通?
docker network connect mynet tomcat01 #打通容器和其它网卡的连接 #将容器加入到要连接的网络里面,结果,一个容器拥有两个ip地址
感谢狂神老师的视频支持点击跳转