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 模式提供了高性能和良好的隔离性,适用于需要直接访问物理网络的场景。