Docker0网络解析
Docker0
通过命令查看
lo下所表示的是本机回环地址
etho下是我阿里云上的网卡地址
docker0是docker下的地址,docker0本身相当于一个虚拟网卡,整个docker0类似于路由器
启动一个tomcat镜像
docker run -it -P --name tom1 tomcat:8
启动另一个tomcat镜像
在宿主机上用ip addr查看
docker中所有借口都是虚拟的
-
可以ping通容器内部
-
容器之间可以互通
容器删除,相应的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
分类:
docker
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· 阿里巴巴 QwQ-32B真的超越了 DeepSeek R-1吗?
· 【译】Visual Studio 中新的强大生产力特性
· 【设计模式】告别冗长if-else语句:使用策略模式优化代码结构
· 10年+ .NET Coder 心语 ── 封装的思维:从隐藏、稳定开始理解其本质意义