docker网络探究

一、 docker 0

当Docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥在这里插入图片描述
启动两个容器tomcat01和tomcat02并查看主机和容器网络

# 相关命令
docker run -d -P --name tomcat01 tomcat
docker run -d -P --name tomcat02 tomcat
ip addr
docker exec -it tomcat01  ip addr
docker exec -it tomcat02  ip addr

主机:

在这里插入图片描述

容器:

在这里插入图片描述

在这里插入图片描述
此时 docker0、eth0@if7、eth0@if9之间相互均能ping通,主机与容器之间的网络通过桥接的方式连接

# 相关命令
docker exec -it tomcat01  ping 172.17.0.01
docker exec -it tomcat01  ping 172.17.0.03

在主机上创建一对虚拟网卡veth pair设备,veth-pair 就是一对的虚拟设备接口,成对出现,Docker将veth pair设备的一端放在新创建的容器中,并命名为eth0(容器的网卡),另一端放在主机中,以vethxxx这样类似的名字命名,并将这个网络设备加入到docker0网桥中。可以通过brctl show命令查看。
在这里插入图片描述

二、容器互联 --link(理解原理,不推荐使用)

由于容器启动时ip时随机分配的,如何使用名称ping通,从而达成类似于feign组件那样的高可用场景

docker run -d -P --name tomcat03 --link tomcat02 tomcat
#ping通
docker exec -it tomcat03  ping tomcat02
#ping不通
docker exec -it tomcat02  ping tomcat03

探究原因:
bccca9c71cdb
在这里插入图片描述
查看tomcat03的容器配置 docker inspect tomcat03
docker inspect tomcat02
查看tomcat03的hosts配置,发现--link参数的原理
在这里插入图片描述
如果想在tomcat02中通过容器名称ping通tomcat03,可以手动修改其hosts文件后重启。
这种–link的方法是不推荐使用的
在实际开发中我们通过自定义网络来解决

三、自定义网络

1. docker的网络模式

查看所有网络
在这里插入图片描述

  • Host
    容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。
  • Bridge
    此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。(默认网络模式,自己创建也使用这个方式
  • None
    该模式关闭了容器的网络功能,不创建网络。
  • Container
    创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。

默认方式使用名称为bridge的已有网络

# 之前的创建容器方式带了默认参数 --net bridge
docker run -d -P --name tomcat04 tomcat
docker run -d -P --name tomcat04 --net bridge tomcat

2. 创建网络

创建网络主要参数
在这里插入图片描述
创建网络mynet1
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
用自定义网络mynet1创建两个容器tomcat05和tomcat06
在这里插入图片描述
在这里插入图片描述

3. 自定义网络的好处

  • 直接通过服务(容器)名称通信,实现高可用,比如重新运行mysql(ip重新分配)不必更改连接数据库配置的ip)
  • 不同集群使用不同网络,实现集群网络安全与隔离,比如redis和mysql集群使用不同的网络

问题来了
如何实现两个网络间的通信呢
在这里插入图片描述

4. 连通网络

将tomcat01与mynet1连通
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值