Docker 容器内部的网络环境和外部 不完全一样,它是一个 隔离的虚拟网络环境,但可以根据需要进行配置,使其与主机或外部网络交互。以下是详细解释:
Docker 默认使用一种称为 bridge 的网络驱动,它会为每个容器分配一个独立的私有 IP 地址(通常在 172.x.x.x 网段)。具体表现如下:
-p 8080:80)才能从主机访问容器内的服务。Docker 支持几种网络模式,不同模式下容器的网络环境会有所不同:
| 网络模式 | 特点 |
|---|---|
bridge | 默认模式,容器有独立 IP,通过桥接网络通信,需要端口映射才能被外部访问。 |
host | 容器与宿主机共享网络命名空间,使用主机的 IP 和端口(没有网络隔离)。 |
none | 容器没有网络接口,完全断网。 |
container:<name> | 与另一个容器共享网络命名空间,适合需要协同工作的容器间通信。 |
| 自定义 bridge 网络 | 可以设置子网、IP 范围、服务发现等,适合微服务架构。 |
| 特性 | 容器内部网络 | 外部网络(如主机、互联网) |
|---|---|---|
| IP 地址 | 虚拟私有 IP(如 172.17.x.x) | 公网或主机的 IP(如 192.168.x.x) |
| 网络命名空间 | 独立 | 系统共享 |
| 默认连通性 | 无法被外部直接访问 | 可互联 |
| 可达互联网 | 通过 NAT | 直接可达 |
| 多容器通信 | 使用内部 DNS 或 IP | 需要显式暴露端口或自定义网络 |
bridge 网络加端口映射即可。host 模式。none 网络,并配置 IPC、volumes 等方式通信。