帮助中心 >  技术知识库 >  云服务器 >  服务器教程 >  Docker 容器配置网络:桥接、主机与网络模式详解

Docker 容器配置网络:桥接、主机与网络模式详解

2025-12-26 16:06:41 398

Docker 容器配置网络:桥接、主机与网络模式详解

 

欢迎来到8455线路检测中心技术小课堂,每天分享一个技术小知识。

 

Docker 网络是容器化架构中至关重要的组件,它决定了容器如何与外部世界及其他容器通信。掌握 Docker 网络配置对于构建安全、高效的容器化应用至关重要。本文将深入介绍 Docker 的主要网络模式、配置方法和实际应用场景。

1. Docker 网络基础

查看 Docker 网络

# 列出所有网络

docker network ls

 

# 查看网络详细信息

docker network inspect bridge

 

# 查看容器网络配置

docker inspect 容器名 --format='{{json .NetworkSettings.Networks}}' | jq .

Docker 网络架构

Docker 提供五种主要网络模式:

1. bridge:默认网络模式,容器通过虚拟网桥连接

2. host:容器直接使用宿主机网络栈

3. none:无网络连接,完全隔离

4. container:共享另一个容器的网络命名空间

5. 自定义网络:用户定义的桥接或覆盖网络

2. 桥接网络(Bridge)模式

默认桥接网络

# 运行容器使用默认桥接网络

docker run -d --name web1 nginx:latest

docker run -d --name web2 nginx:latest

 

# 查看网络配置

docker network inspect bridge

 

# 测试容器间通信(通过IP)

docker exec web1 ping $(docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' web2)

自定义桥接网络

# 创建自定义桥接网络

docker network create --driver bridge my_bridge

 

# 配置桥接参数

docker network create \\

  --driver bridge \\

  --subnet=172.20.0.0/16 \\

  --ip-range=172.20.5.0/24 \\

  --gateway=172.20.5.254 \\

  custom_bridge

 

# 运行容器加入自定义网络

docker run -d --name app1 --network my_bridge myapp:latest

docker run -d --name app2 --network my_bridge myapp:latest

 

# 容器间可以直接通过容器名通信

docker exec app1 ping app2

3. 主机网络(Host)模式

使用主机网络

# 运行容器使用主机网络

docker run -d --name nginx_host --network host nginx:latest

 

# 验证网络模式

docker inspect nginx_host --format='{{.HostConfig.NetworkMode}}'

 

# 在宿主机查看端口

ss -tuln | grep :80

主机网络的优势与限制

优势

· 性能最佳,无网络转换开销

· 容器直接使用宿主机IP

限制

· 端口冲突风险

· 安全风险较高

· 无法在同一宿主机运行多个使用相同端口的容器

4. 无网络(None)模式

# 运行无网络容器

docker run -d --name isolated --network none alpine sleep 3600

 

# 验证无网络

docker exec isolated ip addr

docker exec isolated ping 8.8.8.8  # 应该失败

应用场景

· 需要完全网络隔离的安全敏感应用

· 仅处理本地文件的批处理任务

5. 容器网络模式

# 运行第一个容器

docker run -d --name web_base nginx:latest

 

# 运行第二个容器共享第一个容器的网络

docker run -d --name web_shared --network container:web_base myapp:latest

 

# 验证网络共享

docker inspect web_shared --format='{{.HostConfig.NetworkMode}}'

特点

· 两个容器共享同一网络命名空间

· 相同的IP地址和端口映射

· 适合Sidecar模式或网络代理场景

6. 自定义网络配置

创建网络时指定选项

# 创建完整配置的网络

docker network create \\

  --driver=bridge \\

  --subnet=192.168.100.0/24 \\

  --ip-range=192.168.100.128/25 \\

  --gateway=192.168.100.254 \\

  --opt com.docker.network.bridge.name=br-mynet \\

  --opt com.docker.network.bridge.enable_ip_masquerade=true \\

  --opt com.docker.network.bridge.enable_icc=true \\

  --opt com.docker.network.bridge.host_binding_ipv4=0.0.0.0 \\

  my_custom_network

为容器指定静态IP

# 创建带子网的网络

docker network create --subnet=10.10.0.0/16 static_net

 

# 运行容器指定静态IP

docker run -d \\

  --name static_container \\

  --network static_net \\

  --ip 10.10.0.100 \\

  nginx:latest

 

# 验证IP配置

docker inspect static_container --format='{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}'

 

8455线路检测中心官网上拥有完善的技术支持库可供参考,大家可自行查阅,更多技术问题,可以直接咨询。同时,8455线路检测中心整理了运维必备的工具包免费分享给大家使用,需要的朋友可以直接咨询。

更多技术知识,8455线路检测中心期待与你一起探索。

 

 


提交成功!非常感谢您的反馈,我们会继续努力做到更好!

这条文档是否有帮助解决问题?

非常抱歉未能帮助到您。为了给您提供更好的服务,我们很需要您进一步的反馈信息:

在文档使用中是否遇到以下问题:
XML 地图