共计 1171 个字符,预计需要花费 3 分钟才能阅读完成。
咱们在应用 docker run 创立 Docker 容器时,能够用 –net 选项指定容器的网络模式,Docker 有以下 4 种网络模式:
- host 模式,应用 –net=host 指定。
- container 模式,应用 –net=container:NAME\_or\_ID 指定。
- none 模式,应用 –net=none 指定。
- bridge 模式,应用 –net=bridge 指定,默认设置。
上面别离介绍一下 Docker 的各个网络模式。
1.1 host 模式
家喻户晓,Docker 应用了 Linux 的 Namespaces 技术来进行资源隔离,如 PID Namespace 隔离过程,Mount Namespace 隔离文件系统,Network Namespace 隔离网络等。一个 Network Namespace 提供了一份独立的网络环境,包含网卡、路由、Iptable 规定等都与其余的 Network Namespace 隔离。一个 Docker 容器个别会调配一个独立的 Network Namespace。但如果启动容器的时候应用 host 模式,那么这个容器将不会取得一个独立的 Network Namespace,而是和宿主机共用一个 Network Namespace。容器将不会虚构出本人的网卡,配置本人的 IP 等,而是应用宿主机的 IP 和端口。
例如,咱们在 10.10.101.105/24 的机器上用 host 模式启动一个含有 web 利用的 Docker 容器,监听 tcp80 端口。当咱们在容器中执行任何相似 ifconfig 命令查看网络环境时,看到的都是宿主机上的信息。而外界拜访容器中的利用,则间接应用 10.10.101.105:80 即可,不必任何 NAT 转换,就如间接跑在宿主机中一样。然而,容器的其余方面,如文件系统、过程列表等还是和宿主机隔离的。
1.2 container 模式
在了解了 host 模式后,这个模式也就好了解了。这个模式指定新创建的容器和曾经存在的一个容器共享一个 Network Namespace,而不是和宿主机共享。新创建的容器不会创立本人的网卡,配置本人的 IP,而是和一个指定的容器共享 IP、端口范畴等。同样,两个容器除了网络方面,其余的如文件系统、过程列表等还是隔离的。两个容器的过程能够通过 lo 网卡设施通信。
1.3 none 模式
这个模式和前两个不同。在这种模式下,Docker 容器领有本人的 Network Namespace,然而,并不为 Docker 容器进行任何网络配置。也就是说,这个 Docker 容器没有网卡、IP、路由等信息。须要咱们本人为 Docker 容器增加网卡、配置 IP 等。
1.4 bridge 模式
bridge 模式是 Docker 默认的网络设置,此模式会为每一个容器调配 Network Namespace、设置 IP 等,并将一个主机上的 Docker 容器连贯到一个虚构网桥上。上面着重介绍一下此模式。