Docker 网络管理
网络作为不同主机与主机之间、容器与主机之间、容器与容器之间进行信息交互的重要途经,是学习Docker不可缺少的一环。docker官方提供四种网络管理方式,分别是:
Null:把容器放入独立的网络空间但不做任何网络配置;
Host:使用主机网络名空间,复用主机网络;
Container:重用其他容器的网络;
Bridge:使用网桥提供容器互联;
1.Null 模式
Null模式是一种空实现,类似go语言中提供的接口,可以通过null模式启动容器,并通过命令手动为容器配置网络。
启动一个网络类型为none的容器,并查看网络配置信息,可以看到没有任何信息。
2.Host 模式
host模式使用主机网络名空间,即复用主机网络。
启动一个网络类型为host的容器,并查看网络配置信息,可以看到与主机网段是一致的。
3.Container 模式
Container:重用其他容器的网络;
Docker网络container模式是指定其和已经存在的某个容器共享一个 Network Namespace,此时这两个容器共同使用同一网卡、主机名、IP 地址,容器间通讯可直接通过本地回环 IO接口通讯。但这两个容器在其他的资源上,如文件系统、进程列表等还是隔离的。
4.Bridge模式:
Bridge模式:当Docker server启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上启动的Docker容器会连接到这个虚拟网桥上。虚拟网桥的工作方式和物理交换机类似,这样主机上的所有容器就通过交换机连在了一个二层网络中。
当创建Docker 容器时,同时会创建了veth pair接口,将veth pair的一端连接到docker0网桥,veth pair的另一端设置为容器名空间的eth0,并为容器名空间的eth0分配IP。通过这种方式,主机可以跟容器通信,容器之间也可以相互通信。Docker 就创建了在主机和所有容器之间一个虚拟共享网络。
写在后面,docker的容器网络通信还包括跨主机间的容器通信,这一部分会在之后更新,谢谢大家支持!