docker网络探究

目录

  • 一、 docker 0
  • 二、容器互联 --link(理解原理,不推荐使用)
  • 三、自定义网络
    • 1. docker的网络模式
    • 2. 创建网络
    • 3. 自定义网络的好处
    • 4. 连通网络

一、 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

主机:

docker网络探究_第1张图片

容器:

在这里插入图片描述

在这里插入图片描述
此时 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命令查看。
docker网络探究_第2张图片

二、容器互联 --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

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

三、自定义网络

1. docker的网络模式

查看所有网络
docker网络探究_第7张图片

  • 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. 创建网络

创建网络主要参数
docker网络探究_第8张图片
创建网络mynet1
docker网络探究_第9张图片
docker网络探究_第10张图片
docker网络探究_第11张图片
用自定义网络mynet1创建两个容器tomcat05和tomcat06
docker网络探究_第12张图片
docker网络探究_第13张图片

3. 自定义网络的好处

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

问题来了
如何实现两个网络间的通信呢
docker网络探究_第14张图片

4. 连通网络

将tomcat01与mynet1连通
docker网络探究_第15张图片
docker网络探究_第16张图片
docker网络探究_第17张图片

你可能感兴趣的:(docker)