
ip addr

查看地址

三个网络

运行tomcat

查看容器内网络地址

查看容器内网络地址

ping docker分配的地址

原理
每次启动一个容器,就会多一个网口

每次启动一个容器,就会多一个网口
以ip方式进入tomcat02

以ip方式进入tomcat02

image.png
测试tomcat01和tomcat02是否可以ping通

测试tomcat01和tomcat02是否可以ping通
网络模型图

网络模型图
结论:tomcat01和tomcat02是公用的一个路由器,docker0。

结论

image.png
Docker使用的是Linux桥接,宿主机中是一个Docker容器的网桥 docker0。最多大约分配65535个地址

image.png
移除容器之后,网卡自动消失

移除容器之后,网卡自动消失
查看容器地址,发现261到262的网络地址没有了

查看容器地址,发现261到262的网络地址没有了

结论
--link

--link
直接通过镜像名ping俩个tomcat,发现并不能ping通
docker exec -it tomcat02 ping tomcat01

直接通过镜像名ping俩个tomcat,发现并不能ping通
通过--link启动tomcat 可以通过镜像名之间ping通
docker run -d -P --name tomcat03 --link tomcatj02 tomcat

通过--link启动tomcat 可以通过镜像名之间ping通
但是此时反向不可以ping通,也就是tomcat02ping不同tomcat03

但是此时反向不可以ping通,也就是tomcat02ping不同tomcat03
查看docker网络

查看docker网络
查看容器中的三个tomcat分配了三个ip

查看容器中的三个tomcat分配了三个ip

image.png
查看tomcat03的配置,发现--link就是在tomcat03的hosts中配置了tomcat02的地址

在tomcat03的hosts中配置了tomcat02的地址
再次查看tomcat02的hosts配置,发现里面没有配置tomcat03的配置,所以tomcat02ping不同tomcat03,也就说明--link是单向的

再次查看tomcat02的hosts配置,发现里面没有配置tomcat03的配置,所以tomcat02ping不同tomcat03,也就说明--link是单向的

结论
自定义网络
查看所有的docker网络

查看所有的docker网络
网络模式

网络模式
1.查看ip地址

查看ip地址
2.创建docker网络
docker network create --drive bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
# --subnet:子网掩码
# --gateway:网关
#--drive:bridge 桥接方式

创建docker网络

image.png
查看刚刚配置的网络

查看刚刚配置的网络
3.查看自己配置的网络
docker network inspect mynet

查看自己配置的网络
4.用我们自己的网络启动两个tomcat

用我们自己的网络启动两个tomcat
5.此时查看我们自己的网络mynet,发现有俩个容器 就是刚刚的俩个tomcat
docker network inspect mynet

此时查看我们自己的网络`mynet`,发现有俩个容器 就是刚刚的俩个tomcat

此时查看我们自己的网络`mynet`,发现有俩个容器 就是刚刚的俩个tomcat
6.此时再次ping俩个tomcat,发现已经可以实现互相ping通

此时再次ping俩个tomcat,发现已经可以实现互相ping通
而且通过名字也可以ping通俩个tomcat

而且通过名字也可以ping通俩个tomcat
网络打通
1.想要实现172.18.0.1ping通192.168.0.1

网络打通

docker network connect命令的使用方法
2.首先使用mynet网络和tomcat01连通
docker network connect mynet tomcat01

首先使用mynet网络和tomcat01连通
3.此时再次查看mynet网络

image.png

image.png

一个容器,俩个IP地址,tomcat01有俩个ip
4.此时ping俩个tomcat
其中一个是docker0网络的tomcat01,一个是mynet的tomcat-net-01,发现可以ping通

此时ping俩个tomcat