Docker容器网络互通配置:从零开始完整教程

为什么你需要手动配置容器网络互通

默认情况下,Docker 会为每个容器分配独立的网络空间,容器之间互相隔离。
但很多场景——比如让 Web 容器访问数据库容器——就需要打通它们的网络。
Docker 提供了多种网络模式,对新手最友好、最可控的方式是使用 自定义 bridge 网络
本文围绕 Docker 容器网络互通配置,带你一步步操作,并附上常见报错和避坑提示。

准备工作:确认 Docker 环境

在开始之前,确保你已经安装了 Docker,并且能正常执行 docker 命令。
如果你是用宝塔面板集成的 Docker,同样适用。
打开终端(或宝塔终端),输入以下命令查看版本:

docker --version

如果显示版本号(例如 Docker version 24.0.6)说明环境就绪。
另外,建议先查看一下当前的网络列表,了解默认状态:

docker network ls

你会看到至少三个默认网络:bridgehostnone
我们的目标是在 bridge 之外创建一个新网络,让容器加入它。

第一步:创建自定义网络

使用 docker network create 命令创建一个名称为 my-net 的 bridge 网络(名字可以换成你喜欢的):

docker network create my-net

创建成功后,再用 docker network ls 就能看到新增了 my-net
这个网络默认使用 bridge 驱动,它提供独立的 IP 网段和 DNS 解析能力。

扩展说明:如果你需要指定网段或限制 IP 范围,可以加 --subnet 参数,比如 --subnet=172.20.0.0/16,新手通常用默认值就够了。

第二步:启动容器并连接到该网络

运行两个容器来演示互通。
先启动一个 Nginx 容器(作为 Web)并加入 my-net

docker run -d --name web --net my-net nginx:alpine

再启动一个 Alpine 容器(作为客户端)也加入同一网络:

docker run -it --name client --net my-net alpine sh

alpine 的 shell 会直接打开。
此时 clientweb 都在 my-net 中。

第三步:在容器内测试网络连通性

client 容器的 shell 中,先更新包管理器并安装 curl

apk update && apk add curl

然后尝试通过容器名访问 web 的默认页面:

curl http://web

如果返回一段 HTML 页面,说明容器间已经成功互通!自定义 bridge 网络会自动用容器名作为 DNS 主机名,所以直接用容器名就能解析到对应 IP。
这是最方便的验证方式。

你也可以用 IP 来测试,先获取 web 的 IP:

docker inspect web | grep IPAddress

在 client 里 ping 那个 IP 或者 curl http:// 同样能通。

避坑指南:新手最容易踩的四个坑

1. 容器不在同一网络
默认两个容器都连接到默认 bridge 网络时,只能通过 IP 互通,不能通过容器名。新手经常发现 ping 容器名 不通。解决方式就是统一使用自定义网络。

2. 容器重启后 IP 可能变化
自定义网络下,容器重启有可能重分配 IP。建议始终用容器名通信,而不是硬编码 IP。

3. 注意端口冲突
网络互通只解决容器间通信,不影响宿主机端口映射。如果两个容器都需要宿主机的 80 端口,需要做端口转发映射到不同宿主机端口。

4. 连接已有容器到新网络
如果容器已经运行在默认 bridge 上,可以动态将它连接到新网络:

docker network connect my-net 容器名

这样容器就同时加入两个网络了(多网卡)。
断开用 docker network disconnect

效果验证与清理

完成测试后,输入 exit 退出 client 容器(会停止),然后可以删除容器和网络以保持环境整洁:

docker rm -f web client
docker network rm my-net

如果你在操作中遇到 network not foundcontainer cannot be connected 等错误,
先检查网络是否存在(docker network ls)和容器是否处于运行状态。

总结

Docker 容器网络互通配置并不复杂,核心就是创建自定义 bridge 网络,并将需要通信的容器加入该网络。
记住两点:自定义网络支持容器名 DNS 解析,比默认 bridge 更方便;
容器间通信优先使用容器名而不是 IP。
按照本文的步骤,十分钟就能搞定。
如果你正在处理类似需求,建议先按流程完整跑一遍,再根据实际环境微调网络参数。
遇到异常时优先检查网络列表和容器连接状态,大部分问题都能快速定位。

分享到:
上一篇
Docker镜像瘦身优化减小体积
下一篇
Docker离线部署无网络环境安装
1
系统公告

高考专属福利来袭|凭准考证免费领香港 CN2 云服务器

值高考落幕之际,泽御云开启考生专属回馈 + 产品限时特惠双重活动,助力学子暑期学习建站 高考 考生专属福利 全体应届高考生,凭高考准考证即可免费申领【香港 CN2 轻量云服务器,4 核 4G AMD 处理器】,免费使用周期 30 天,可用于搭建个人站点、编程实操、技术实训,祝各位考生金榜题名,前程似锦! 泽御云资质齐全合规自营机房,线路覆盖香港 CN2、国内 BGP、内蒙电信、美国精品线路,售后全天候技术支持。 官方网站:www.zeyuyun.com,活动限时有效,优惠逾期不再保留。
服务中心
客服
在线客服
24小时为您服务
咨询
联系我们
联系我们,为您的业务提供专属服务。
24/7 技术支持
如果您遇到寻求进一步的帮助,请过工单与我们进行联系。
24/7 即时支持
泽御云
售前客服
泽御云
泽御云
售后客服
泽御云
技术支持
评价
您对当前页面的整体感受是否满意?
😞
非常不满意
😕
不满意
😐
一般
🙂
满意
😊
非常满意