docker学习(九)——docker网络

理解daoker0

清空所有环境(即清除所有容器及镜像)
使用ip addr查看ip地址
在这里插入图片描述
问题:docker是如何处理容器网络访问的?
在这里插入图片描述
启动一个tomcat容器

docker run -d -P --name tomcat01 tomcat

查看容器内部网络地址ip addr

docker exec -it tomcat01 ip addr

在这里插入图片描述
发现 容器启动的时候会得到一个eth0@if77 的ip地址,这就是docker分配的!
我们此时再容器外ping下这个容器的ip地址,发现是可以ping的通的
在这里插入图片描述
说明linux可以ping通容器内部!

原理:

  1. 我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装了docker,就会有一个网卡docker0桥接模式,使用的是evth-pair技术!
    再次测试ip addr
    在这里插入图片描述
    会发现此处的77,76与上面的容器内部网络的76,77是一致的
  2. 再启动一个容器测试,发现又多了一对网卡
    在这里插入图片描述

我们发现这个容器带来的网卡,都是一对一对的
evth-pair就是一对的虚拟设备接口,他们都是成对出现的,一端连着协议,一端彼此相连
正因为这个特性,evth-pair充当一个桥梁,连接着各种虚拟网络设备
OpenStack,Docker容器之间的连接,OVS的连接,都是使用的evth-pair技术

  1. 我们来测试下tomcat02和tomcat03是否可以ping通
    在这里插入图片描述
    结论:容器和容器之间也是可以互相ping通的
    在这里插入图片描述
    结论:tomcat01和tomcat02是公用的一个路由器,docker0
    所有的容器不指定网络的情况下,都是由docker0路由的,docker会给我们的容器分配一个默认的可用ip

小结:
Docker使用的是Linux的桥接,宿主机中是一个Docker容器的网桥Docker0
只要容器删除,对应网桥一对就没了

在这里插入图片描述

–link

思考一个问题:
当我们的一个微服务重启后,其ip地址变了,服务名未变,此时我们使用之前的ip地址将两个容器之间进行通信需要手动设置修改ip地址,这样很麻烦并且不符合高可用的原则,我们是否可以通过服务名来ping呢?
我们测试一下:

结论是不可以的
我们使用–link命令重新启动一个tomcat04并pingtomcat03,会发现此时ping通了
在这里插入图片描述
此时反向是ping不通的,我们查看本地的网卡
docker network ls
在这里插入图片描述
这就是docker0,通过docker network inspect 网卡id查看详情
在这里插入图片描述
在这里插入图片描述
我们再通过docker inspect tomcat04查看其内详情
在这里插入图片描述
发现容器内部Links属性中的值,通过这个,从而可以通过04访问03
不过现在已经不建议使用–link了,而使用自定义网络

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值