Docker0网络解析

Docker0

通过命令查看

在这里插入图片描述

lo下所表示的是本机回环地址
etho下是我阿里云上的网卡地址
docker0是docker下的地址,docker0本身相当于一个虚拟网卡,整个docker0类似于路由器

启动一个tomcat镜像

docker run -it -P --name tom1 tomcat:8

启动另一个tomcat镜像

在宿主机上用ip addr查看

docker中所有借口都是虚拟的

  1. 可以ping通容器内部

  2. 容器之间可以互通

在这里插入图片描述
容器删除,相应的Veth也会自动删除

–link-

-link可以让容器使用 ping 容器名称

docker run -d -P --name tomcat1 tomcat
docker run -d -P --name tomcat2 tomcat

docker run -d -P --name tomcat3 --link tomcat2 tomcat
docker exec -it tomcat3 ping tomcat2

但是会引起一些麻烦,3可以连2,但是2不饿能连3,就比较麻烦。

本质就是在3中的/etc/hosts添加的了2的地址和名称

docker0本身也不支持使用容器名称进行通信

三种网络模式

bridge:桥接模式

host:主机模式

none:无网络模式

查看网络模式: docker network ls

bridge

在这里插入图片描述

host

该模式下容器是不会拥有自己的ip地址,而是使用宿主机的ip地址和端口。这种模式的好处就是网络性能比桥接模式的好。缺点就是会占用宿主机的端口,网络的隔离性不太好

none模式

加上后面的参数就行了 --net=none

none模式没有IP地址,无法连接外网,等于就是断网的状态,作用就是用于测试,生产环境一般不会用到这种

自定义网络模式

–driver bridge 设置网络模式
–subnet 192.168.0.1/16 设置子网
–gateway 192.168.0.1 设置网关

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet

自定义网络测试

首先启动两个Ubuntu容器再分别安装net-tools和ping命令

使用自定义的网络,不用–link也可以ping容器名称

root@iZ2zegtrmp24clddqup0eiZ:~# docker exec -it ubuntu1 ping ubuntu2
PING ubuntu2 (192.168.0.3): 56 data bytes
64 bytes from 192.168.0.3: icmp_seq=0 ttl=64 time=0.080 ms
64 bytes from 192.168.0.3: icmp_seq=1 ttl=64 time=0.093 ms
64 bytes from 192.168.0.3: icmp_seq=2 ttl=64 time=0.103 ms
64 bytes from 192.168.0.3: icmp_seq=3 ttl=64 time=0.092 ms
64 bytes from 192.168.0.3: icmp_seq=4 ttl=64 time=0.120 ms

容器连接网络

docker network connect mynet tomcat1	// docker network connect 网络名称 容器名称

原理就是将容器加入到该网络上,一个容器有多个IP
在这里插入图片描述

posted @ 2022-05-09 14:12  岁岁红莲  阅读(653)  评论(0编辑  收藏  举报