docker 一共有5种网络模式。
1、bridge模式(桥接),使用选项--net=bridge指定,此模式为docker默认设置。
2、Host NetWork模式(主机)
3、None NetWork模式
4、Container NetWork模式
5、自定义NetWork模式,使用命令docker network create my-test创建,使用--net=my-test指定。
bridge模式(桥接)
桥接模式,就是在宿主机起了一个桥接设备docker0,可是我们又该如何把这些容器“连接”到 docker0 网桥上呢?这时候,我们就需要使用一种名叫 Veth Pair 的虚拟设备了。Veth Pair 设备的特点是:它被创建出来后,总是以两张虚拟网卡(Veth Peer)的形式成对出现的。并且,从其中一个“网卡”发出的数据包,可以直接出现在与它对应的另一张“网卡”上,哪怕这两个“网卡”在不同的 Network Namespace 里。
yum install -y bridge-utils
brctl show 查看信息
host 网络模式
host模式下容器不会获得一个独立的network namespace,而是与宿主机共用一个。这就意味着容器不会有自己的网卡信息,而是使用宿主机的。容器除了网络,其他都是隔离的。
none网络模式
获取独立的network namespace,但不为容器进行任何网络配置,需要我们手动配置,此容器没有接口ip,与外界无沟通,用于安全性比较高的业务,可自己手动添加网络。
container 网络模式
与指定的容器使用同一个network namespace,具有同样的网络配置信息,两个容器除了网络,其他都还是隔离的。新创建的容器不会创建自己的网卡,配置自己的IP,而是和一个指定的容器共享IP、端口范围等。同样,两个容器除了网络方面,其他的如文件系统、进程列表等还是隔离的。两个容器的进程可以通过lo网卡设备通信。
自定义网络模式
与默认的bridge原理一样,但自定义网络具备内部DNS发现,可以通过容器名或者主机名容器之间网络通信。
可通过命令docker network create 创建自定义的网络。