Docker 网络与容器连接性深度解析
1. Docker 网络基础
Docker 在容器网络方面有着独特的实现方式。当启动容器时,它会创建网络命名空间、veth 对以及 docker0 桥接接口(若不存在),并且通过一条命令就能完成容器的创建和删除操作,这对于应用开发者来说非常强大,无需记忆复杂的 Linux 命令,避免破坏主机的网络配置。
1.1 Docker 网络模型
Libnetwork 是 Docker 对容器网络的实现,其设计理念基于容器网络模型(CNM)。Libnetwork 实现了 CNM,主要由三个组件构成:沙箱、端点和网络。
- 沙箱 :负责管理主机上所有容器的 Linux 网络命名空间。
- 网络 :是同一网络上的端点集合,端点即网络上的主机。
- 网络控制器 :通过 Docker 引擎的 API 管理这些组件。
在端点方面,Docker 使用 iptables 进行网络隔离。容器发布端口以供外部访问,通常获取的是私有 RFC 1918 地址,而非公共 IPv4 地址。容器上运行的服务需逐个端口暴露,并且要将容器端口映射到主机端口以避免冲突。Docker 启动时,会在主机上创建一个虚拟桥接接口 docker0,并为其分配一个来自私有 1918 范围的随机 IP 地址,该桥接接口就像物理桥一样在两个连接设备之间传递数据包,每个新容器都会自动连接一个接口到 docker0 桥接接口。
CNM 定义了多种网络模式,具体如下表所示:
| 网络模式 | Docker 引擎等
超级会员免费看
订阅专栏 解锁全文

被折叠的 条评论
为什么被折叠?



