docker系列--网络

        

💰 5种网络模式

  • 默认设置是桥接模式,网络地址为172.17.0.0/16,同一主机的容器实例能够通信,但不能跨主机通信。
  • 使用 docker network list 查看有哪些网络。

docker网络

1️⃣host模式

  • 使用 –net=host 指定,与宿主机共享网络。
  • 容器不会虚拟出自己的网卡,配置自身IP,而是使用宿主机的 IP 和端口,如此一来,宿主机的所有设备,都会暴露给容器。

2️⃣container模式

  • 使用 –net=container:ID 指定,与某个容器实例共享网络。
  • 新创建的容器不会创建自己的网卡,配置IP,而是和一个指定的容器共享 IP、端口范围等。但是两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过 IO 网卡设备通信。

3️⃣none模式

  • 使用 –net=none 指定。不设置网络,相当于容器内没有配置网卡,用户可以手动配置。
  • 与前两个模式不同。none模式下,Docker 容器拥有自己的 Network Namespace,但不为 Docker容器进行任何网络配置。也就是说,这个 Docker 容器没有网卡、IP、路由等信息。需要我们自己为 Docker 容器添加网卡、配置 IP 等。一般这个模式用的很少。

4️⃣bridge模式

  • 使用 –net=bridge 指定,这是Docker默认的网络设置。
  1. 此模式会为每一个容器分配 Network Namespace、设置 IP 等,并将一个主机上的 Docker 容器连接到一个虚拟网桥上。
  2. Docker server 启动会在主机上创建一个名为 docker0 的虚拟网桥,此主机上启动的 Docker 容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
  3. 然后就要为容器分配 IP 了,Docker 会从 RFC1918 所定义的私有 IP 网段中,选择一个和宿主机不同的IP地址和子网分配给 docker0,连接到 docker0 的容器就从这个子网中选择一个未占用的 IP 使用。一般 Docker 会使用 172.17.0.0/16 这个网段,并将 172.17.42.1/16 分配给 docker0 网桥(在主机上使用 ifconfig 命令是可以看到 docker0 的,可以认为它是网桥的管理接口,在宿主机上作为一块虚拟网卡使用)
  4. 当创建一个 Docker 容器的时候,同时会创建了一对 veth pair 接口(当数据包发送到一个接口时,另外一个接口也可以收到相同的数据包)。这对接口一端在容器内,即 eth0;另一端在本地并被挂载到 docker0 网桥,名称以 veth 开头(例如 vethAQI2QT)。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所有容器之间一个虚拟共享网络。

请添加图片描述

5️⃣自定义模式

  • 使用docker network create创建,使用自定义网络,并且默认支持多种网络驱动,用户可以自由创建桥接网络或者overlay网络。
  • 常用自定义模式,再同一个网络中的容器之间可以互相通信,与另一个容器通信只需要写那个容器名即可,注意虽然同处于一个网络中,但不代表可以调用的时候用127.0.0.1调用。

🚧 同主机不同容器间通信

  • 同主机的不同容器之间通信主要使用Docker桥接(Bridge)模式。该bridge接口运行在本地一个单独的Docker宿主机中,并且它也是其他三种连接方式的基础。

在这里插入图片描述

  • 连接方式
  1. 方式一使用容器的IP地址来通信。这种方式会导致IP地址的硬编码,不方便迁移,并且容器重启后IP地址经常会变,除非设置固定的IP地址。
  2. 方式二通过宿主机的ip:port来通信。这种方式只能依靠监听在暴露出的端口的进程来进行有限的通信。
  3. 方式三使用容器名通过docker的link机制通信。link机制方便了容器去发现其它的容器并且可以安全的传递一些连接信息给其它的容器。使用name给容器起一个别名,这样即使容器重启了,地址发生了变化,不会影响两个容器之间的连接。当docker引入网络新特性后,link机制变的有些多余,但是为了兼容早期版本,–link机制在默认网络上的功能依旧没有发生变化。
  4. 方式四 :docker引入网络新特性后,内置了一个DNS Server,但是只有用户创建了自定义网络后,这个DNS Server才会起作用。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值