
桥接网络:适合开发和测试环境,隔离性强。
主机网络:性能最高,适合高性能需求的场景。
None 网络:完全隔离,适合离线任务或安全隔离。
Overlay 网络:适合分布式应用和集群环境。
Macvlan 网络:适合需要直接接入物理网络的场景。
桥接网络就像是一个“虚拟的局域网”。Docker 在宿主机上创建了一个虚拟的网桥(比如 docker0),所有的容器就像连接到同一个路由器的不同设备一样,通过这个网桥互相通信,也可以访问外部网络。
-p 参数)让外部访问容器内的服务。# 创建一个自定义桥接网络
docker network create my_bridge
# 启动容器并连接到桥接网络
docker run -d --name my_web --network my_bridge nginx主机网络模式就像是“容器直接插在宿主机的网络接口上”。容器直接使用宿主机的网络栈,没有隔离,容器的网络配置和宿主机完全一致。
# 启动容器并使用主机网络
docker run -d --name my_web --network host nginxNone 网络就像是“拔掉网线”,容器没有任何网络配置,无法访问外部网络,也无法和其他容器通信。
# 启动容器并使用 None 网络
docker run -d --name my_container --network none nginxOverlay 网络就像是“跨多个主机的虚拟网络”。它允许在不同主机上的容器之间互相通信,就像它们在同一个局域网中一样。
# 创建一个 Overlay 网络
docker network create -d overlay my_overlay
# 在不同主机上启动容器并连接到 Overlay 网络
docker run -d --network my_overlay my_imageMacvlan 网络就像是“给容器分配一个真实的 MAC 地址”,让容器看起来像是直接连接到物理网络的设备。
# 创建一个 Macvlan 网络
docker network create -d macvlan --subnet=192.168.1.0/24 --gateway=192.168.1.1 -o parent=eth0 my_macvlan
# 启动容器并连接到 Macvlan 网络
docker run -d --network my_macvlan my_image