6 Docker容器网络
6.1 网络模式
-
bridge –net=bridge 默认网络,Docker启动后创建一个docker0网桥,默认创建的容器也是添加到这个网桥中。
-
-
none –net=none 获取独立的network namespace,但不为容器进行任何网络配置,需要我们手动配置。
-
container –net=container:Name/ID 与指定的容器使用同一个network namespace,具有同样的网络配置信息,两个容器除了网络,其他都还是隔离的。
-
自定义网络 与默认的bridge原理一样,但自定义网络具备内部DNS发现,可以通过容器名容器之间网络通信。
6.2 容器网络访问原理
Docker 容器默认使用 bridge 模式的网络。其特点如下:
-
使用一个 linux bridge,默认为 docker0
-
使用 veth 对,一头在容器的网络 namespace 中,一头在 docker0 上
-
该模式下Docker Container不具有一个公有IP,因为宿主机的IP地址与veth pair的 IP地址不在同一个网段内
-
Docker采用 NAT 方式,将容器内部的服务监听的端口与宿主机的某一个端口port 进行“绑定”,使得宿主机以外的世界可以主动将网络报文发送至容器内部
-
外界访问容器内的服务时,需要访问宿主机的 IP 以及宿主机的端口 port
-
NAT 模式由于是在三层网络上的实现手段,故肯定会影响网络的传输效率。
-
容器拥有独立、隔离的网络栈;让容器和宿主机以外的世界通过NAT建立通信
6.3 容器数据包访问流程图
内部→外部
外部→内部
本文摘抄或总结其他笔记,笔记不涉及任何商业用途,如果侵权请及时联系处理