docker网络

理解docker0

在这里插入图片描述

1、问题:docker是如何处理容器网络访问的?

在这里插入图片描述

首先,我们随便找一个已经运行容器的地址

在这里插入图片描述

再通过Linux去ping一下

在这里插入图片描述

我们发现是可以ping通的,说明Linux是可以访问到自己运行的容器的

原理

1、我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只需要安装docker,就会有一个网卡docker0桥接模式,使用的技术是evth-pair技术。

在这里插入图片描述

我们去查询Linux所有网卡的时候,发现除了三个上面讲到的,还有两个网卡,这是因为我在这个Linux上运行了两个docker容器,我们每运行一个docker容器,容器内部会有一个对外连接的通道,Linux上会产生一个连接这个通道的网卡,就实现了Linux与容器的连接。

这就是evth-pair ,就是一对的虚拟设备接口,他们都是成对出现的,一端连接这协议,一端彼此连接,evth-pair充当一个桥梁,连接各种虚拟网络设备。
在这里插入图片描述

通过这个机制,我们的docker容器之间,就可以相互的访问了。

在这里插入图片描述

2、问题:如何通过容器名去连通这个容器

前面我们讲了,每个容器都有一个自己的虚拟网卡,通过这个网卡的ip可以ping通这个容器,那么问题又来了,那没重启一次容器,这个ip都会变化,我们去配置的时候就是否麻烦,每次都要重新更新新的ip去连接这个容器,我们能不能通过容器的名称去连接这个容器呢?

我们只需要在启动的时候,通过link来连通两个容器,那么两个容器之间就可以通过容器名直接ping通了

在这里插入图片描述

当然了,这只是单向的,如果我们希望双方都可以相互访问,就需要在两个容器启动时,都需要去link对方。

那这是怎么做到的呢,我们去容器内的cat/etc/hosts看看,发现下面有一个配置,当我们访问Tomcat02的时候,他就会对应的去访问172.18.0.3。所以,这也是为什么当我们要双向访问的时候两个容器都要配置了。

在这里插入图片描述

3、自定义网络

查看所有网络

在这里插入图片描述

网络模式

bridge:桥接模式 docker(默认)

none:不配置网络

host:和宿主机共享网络

container:容器网络连通!(用的少!局限很大)

默认)

none:不配置网络

host:和宿主机共享网络

container:容器网络连通!(用的少!局限很大)

测试

我们直接启动的命令 其实默认的加了一个–net bridge,就是我们的桥接模式,而这个桥就是docker0.

docker run -d -p --name tomcat01 tomcat 
docker run -d -p --name tomcat01 --net bridge tomcat //这两条命令其实是一样的

docker0特点:默认,域名不能访问,–link可以打通连接。

那我们能不能配置一个自己的docker0来使用

创建一个网络

docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet   //创建一个桥

查看所有的网络

在这里插入图片描述

创建成功

当我们创建了自己的网络后,就修复了docker0的缺点,这时我们的容器之间就能直接ping通了

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值