实例讲解 Docker 自定义网络
Docker 自定义网络实战
这里我们通过一个实际案例,演示如何创建 Docker 自定义网络,让多个容器在同一网络中通信。
1. 需求分析
我们要搭建一个包含 Nginx(Web 服务器) 和 Alpine(测试工具) 的小型网络环境,实现:
- 让 
nginx作为 Web 服务器运行。 - 让 
alpine作为测试容器,能够访问nginx。 - 使用自定义网络,让容器通过名称而不是 IP 地址通信。
 
2. 创建自定义网络
首先,创建一个 自定义桥接网络:
1  | docker network create my_bridge_network  | 
🔹 docker network ls 查看网络:
1  | docker network ls  | 
你会看到类似输出:
1  | NETWORK ID NAME DRIVER SCOPE  | 
✅ 说明 my_bridge_network 已成功创建。
3. 运行 Nginx 容器
1  | docker run -d --name my_nginx --network my_bridge_network nginx  | 
🔹 解释:
-d:后台运行。--name my_nginx:容器名称my_nginx。--network my_bridge_network:加入my_bridge_network网络。nginx:使用 Nginx 官方镜像。
4. 运行 Alpine 测试容器
1  | docker run -it --name my_alpine --network my_bridge_network alpine sh  | 
🔹 解释:
-it:交互模式,进入sh终端。--name my_alpine:容器名称my_alpine。--network my_bridge_network:加入my_bridge_network网络。alpine sh:使用alpine镜像并进入sh终端。
5. 容器之间的通信
在 my_alpine 容器的终端中,执行:
1  | wget -qO- http://my_nginx  | 
如果成功,你会看到 Nginx 默认的 HTML 页面内容。
6. 通过 Ping 测试网络
仍然在 my_alpine 容器的终端中:
1  | ping my_nginx  | 
你应该能看到类似:
1  | PING my_nginx (172.18.0.2): 56 data bytes  | 
✅ 说明 my_alpine 成功解析 my_nginx 并与其通信!
7. 查看网络详情
1  | docker network inspect my_bridge_network  | 
你会看到 Containers 列表,显示 my_nginx 和 my_alpine 都已连接到该网络。
8. 断开和删除网络
断开某个容器的网络:
1  | docker network disconnect my_bridge_network my_alpine  | 
删除网络(必须先停止所有容器):
1  | docker stop my_nginx my_alpine  | 
总结
| 步骤 | 命令 | 
|---|---|
| 创建自定义网络 | docker network create my_bridge_network | 
| 运行 Nginx 容器 | docker run -d --name my_nginx --network my_bridge_network nginx | 
| 运行 Alpine 测试容器 | docker run -it --name my_alpine --network my_bridge_network alpine sh | 
| 在 Alpine 容器中测试 | wget -qO- http://my_nginx | 
| Ping 其他容器 | ping my_nginx | 
| 查看网络详情 | docker network inspect my_bridge_network | 
| 断开容器与网络 | docker network disconnect my_bridge_network my_alpine | 
| 删除网络 | docker network rm my_bridge_network | 
这样,我们就完成了一个 Docker 自定义网络 的完整实战!🚀