在使用docker的时候由于涉及到docker容器之间的相互通信,所以不理解网络原理寸步难行,本文主要介绍一下docker的网络类型和每种类型的作用区别。
一、简单
在docker中系统默认有三种类型的网络:bridge、host、none
bridge(默认)
- 默认网络连接就是此网络。
- 使用NAT转发与宿主机通信,其中 docker0 网络接口充当网关和路由器。
- 具有DNS解析功能,可以自动解析主机名从而无需输入IP地址通信。
- 可以给容器单独指定IP地址进行通信。
host
- 容器与宿主机共享IP与端口资源,由于均共享所以可能会导致容器之间的端口相互冲突。
- 由于是共享IP,所以可以使用127.0.0.1或localhost在容器之间相互通信,也可以容器与宿主机相互通信。
- 此模式没有NAT转发,所以效率最高。
- 无法为容器单独指定IP地址,因为容器和宿主机共享IP和端口资源。
none
- 不使用网络连接,容器无网络连接。
- 仅可以在容器内部本地使用127.0.0.1或localhost通信。
- 不可以跨容器通信。
- 不可以与宿主机通信。
- 完全和外部环境隔离。
二、进阶
下面的的网络环境一般不常用。
Overlay
- Overlay 网络允许在多个 Docker 主机之间创建一个虚拟网络,容器可以通过该网络在不同主机上进行通信。这对于分布式应用程序和容器集群非常有用。Overlay 网络基于 VXLAN(虚拟扩展局域网)技术。
Macvlan
- Macvlan 网络允许容器分配到物理网络上的 MAC 地址,使其看起来像是网络上的独立设备。这对于需要将容器直接连接到现有网络基础设施的场景非常有用。
- 简单讲就是从网络拓扑图上看它就是一个独立的一个物理设备。
- 它仍然受到docker容器运行时的其他限制与隔离。
IPvlan
- 类似于 Macvlan,IPvlan 也可以让容器拥有独立的 IP 地址,但它是基于网络的虚拟化,而不是基于 MAC 地址。
自定义网络
- 你可以自己创建更复杂的网络环境
end…