docker 网络模式研究
前言
实际应用场景中发现centos7中的firewalld对docker容器监听的端口有时候生效, 有时候不生效, 基于此情况深入研究docker的网络模式
一、 Bridge
bridge 是最常用的默认网络配置选项之一。它为容器创建一个虚拟化的网络环境,通过虚拟网络桥接(Bridge)连接容器,并提供网络隔离和互通功能。bridge 网络模式非常适合单机环境中的容器网络配置。
特点:
1.1 默认网桥:
docker0
是 Docker 默认创建的虚拟网络桥接器。所有没有显式指定网络模式的容器都会连接到这个默认网桥网络。1.2 网络隔离:
连接到
docker0
网桥网络的容器可以相互通信,同时与其他未连接到docker0
网络的容器以及宿主机隔离。1.3 自动ip分配:
Docker 会自动为连接到
docker0
网络的容器分配 IP 地址,这些地址通常在172.17.0.0/16
子网范围内(具体范围可以根据 Docker 配置变化)。1.4 NAT和端口映射:
通过
docker0
网桥,Docker 使用网络地址转换(NAT)使容器能够访问外部网络。外部网络无法直接访问容器,除非通过端口映射显式允许。
二、 Host
该网络模式是一种特殊的网络配置选项,它允许容器使用宿主机的网络堆栈。这意味着在 host 网络模式下,容器不会获得独立的网络命名空间,而是与宿主机共享网络配置。
三、 Overlay
Docker 集群中创建跨主机容器通信的网络模式。它允许不同主机上的容器像在同一网络中一样相互通信,适用于使用 Docker Swarm 或 Kubernetes 等编排工具的多主机部署场景。
四、 Ipvlan
IPvlan 模式是一种高级的 Docker 网络模式,它允许您对容器的 IPv4 和 IPv6 地址进行更精细的控制。 它还可以处理第 2 层和第 3 层 VLAN 标记和路由。
五、 Macvlan
Macvlan网络模式是一种高级网络配置选项,它允许用户为每个容器分配唯一的 MAC 地址,使容器能够直接与宿主机的物理网络进行通信。macvlan 模式提供了高性能和良好的隔离性,适用于需要直接访问物理网络的场景。