该文章引用自csdn血煞长虹的文章,本文仅做概括性整理,辅助自己理解

首先,容器之间虽然不是物理隔离,但是它们彼此之间默认是不互联互通的,这也有助于保持每个容器的纯粹性,相互之间互不影响。
其次,既然使用了容器,通常情况下,容器需要与宿主机通信,或者A容器与B容器通信而B不需要知道A的存在,或者A/B两容器相互通信。

模式名称 简介 备注
bridge 容器拥有独属于自己的虚拟网卡和和虚拟IP等网络资源,它们分别通过docker0虚拟网卡与宿主机的eth0网卡交互,进而和外界网络交互 默认模式
host 容器没有自己的任何独立的网络资源(比如:容器的IP、网卡和端口),完全和宿主机共享网络空间 弊端:同一个端口只能同时被一个容器服务绑定
none 光秃秃的一个容器,没有任何的网络资源,就是自娱自乐的光杆司令(很少用) 该模式关闭了容器的网络功能,仅有独自的网络空间(一个空架子),并且该模式不会给容器分配任何网络资源,包括虚拟网卡、路由、防火墙、IP、网关、端口等
container 它是bridge和host模式的合体,优先以bridge方式启动启动第一个容器,后面的所有容器启动时,均指定网络模式为container,它们均共享第一个容器的网络资源,除了网络资源,其他资源,容器彼此之间依然是相互隔离的 第一个以bridge方式启动的容器服务挂掉,后面依赖它的容器,都暂停服务
自定义 该模式也更为灵活,可以通过-d 指定自定义的网络模式的类型,可以是bridge或者overlay,其中overlay功能更为强大,可以指定多个subnet子网网段。 该模式,在容器之间可以使用别名相互通信,这一点很nice(重要)

docker0虚拟网卡科普:
当docker进程启动时,会在主机上创建一个名为docker0的虚拟网桥,宿主机上以Bridge模式启动的容器会链接到这个虚拟网桥上。docker0默认地址172.17.0.0/16。虚拟网桥的工作方式和物理交换机类似,这样宿主机上的所有容器就通过docker0连在一个二层网络中,再通过docker0和物理网卡eth0交互(我本机的物理网卡名字是ens33)

bridge桥接网络模式

就是指,通过bridge桥接的方式,将容器连接到宿主机的docker0虚拟网桥上,每个容器都有自己的虚拟网卡和虚拟IP等网络资源,他们就像是连接在一个交换机上的设备一样,可以相互通信。
docker网络模式-2024-07-02-11-01-31

host主机网络模式

容器直接使用宿主机的网络资源,不会分配自己的IP地址,端口等,完全和宿主机共享网络空间,这样容器就可以直接使用宿主机的网络资源,比如宿主机的IP地址,端口等。(缺点是:同一个端口只能同时被一个容器服务绑定)

docker网络模式-2024-07-02-11-47-46

container容器网络模式

该模式≈bridge+host的混合模式,指定一个容器以bridge方式启动,后面容器启动时指定网络模式为container,它们自动共享第一个容器的网络资源。
就是将第一个容器以bridge模式启动,然后其他的容器以container模式启动,这样他们就共享第一个容器的网络资源,但是其他资源还是独立的。
docker网络模式-2024-07-02-11-48-31