image.png三个网络:

docker如何处理网络访问的

1丶没启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就有有一个网卡docker0桥接模式,使用的技术就是veth-pair技术!

  1. # 我们发现容器带来网卡都是一对一对的
  2. # veth-pair 就是一对的虚拟设备接口,一段连接诶协议,一段彼此相连
  3. # veth-pair 充当一个桥梁,连接各种虚拟网络设备
  4. # Docker容器之间连接,ovs的连接,都是用veth-pair连接的

image.png
结论:tomcat01和tomcat02是公用的一个路由器。docker0
素有的容器不指定网络的情况下,都是douckero路由的,docker会给我们容器分配一个默认可用的ip

docker使用的是linux的桥接 ;宿主机中是一个Docker容器的网桥,docker0
image.png
Docker中所有的网络接口都是虚拟的,虚拟的转发效率高!(内网传递文件)
容器删除,对应一对网桥就没了

—link

  1. 思考一个场景,我们编写了一个微服务,database url=ip:,
  2. 项目不重启,数据库ip换掉了,我们希望可以处理这个问题,可以名字来进行访问容器?
  3. docker exec -it tomcat02 ping tomcat01
  4. ping:tomcat01:Name orsercier not known
  5. #如何解决
  6. docker run -d -p --name tomcat03 --link tomcat02 tomcat
  7. docker exec -it tpmcat03 ping tonmcat02

image.png
#反向可以ping通吗?
不可以
—link 在hosts配置中增加了一个172.18.0.3(已过时)

docker0问题:他不支持容器名连接访问

自定义网络

查看所有的docker网络
image.png

网络模式

bridge :桥接 docker 默认
none :不配置网络
host :和宿主机共享网络
container:容器网格联通!(局限很大,比较少用)

测试

  1. docker run -d -p --name tomcat01 tomcat
  2. docker run -d -p --name tomcat01 --net baridge tomcat
  3. ##创建自定义网络
  4. docker network create-driver bridge --subnet 192.168.0.0/16 --geteway 192.168.0.1

自定义网络

可以代替—link
自定义的网络帮我们维护好了对应的关系,推荐
image.png
好处:
不同的集群可以使用不同的网络
image.png

网络连通

  1. docker network connet 连通一个容器网络

image.png

  1. # docker network connect [OPTIONS] NETWORK CONTAINER
  2. docker network connect mynet tomcat01 #将tomcat01放到了mynet网格下
  3. #一个容器两个ip 就像一个阿里云服务器有公网ip也有内网ip

image.png
结论:假设需要跨网络操作别人,就需要使用docker network connect连通
image.png