一、Docker网络模式简介
基于对Network Namespace的控制,docker可以为在容器创建隔离的网络环境,在隔离的网络环境下,容器具有完全独立的网络栈,与宿主机隔离,也可以使容器共享主机或者其他容器的网络命名空间,基本可以满足开发者在各种场景下的需要。按docker官方的说法,docker容器的网络有五种模式:
网络模式 | 简介 |
---|---|
Bridge(默认模式) | 此模式会为每一个容器分配、设置IP等,并将容器连接到一个docker0虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。 |
Host | 容器将不会虚拟出自己的网卡,配置自己的IP等,而是使用宿主机的IP和端口。 |
Container | 创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围。 |
None | 该模式关闭了容器的网络功能,与宿主机、与其他容器都不连通的. |
二、默认网络
当你安装Docker时,它会自动创建三个网络(bridge、host、none)。你可以使用以下docker network ls命令列出这些网络:
[root@centos8-nat-168-182-152 ~]# docker network ls
NETWORK ID NAME DRIVER SCOPE
c0184302f6a8 bridge bridge local
420492e04276 host host local
fc5e9b954735 none null local
我们在使用docker run创建Docker容器时,可以用 –net 选项指定容器的网络模式,Docker可以有以下4种网络模式:
- bridge模式:使用 --net=bridge 指定,默认设置。
- host模式:使用 --net=host 指定。
- none模式:使用 --net=none 指定。
- container模式:使用 --net=container:NAME_or_ID 指定。
三、Bridge模式(默认方式)
当Docker server启动时,会在主机上创建一个名为docker0的虚拟网桥,此主机上