实例讲解 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 自定义网络 的完整实战!🚀