跳到主要内容
常见问题 Debian容器网络容器互通

Debian 容器之间网络不通?

Debian 上容器之间互访不通。按默认网络、自定义网络、DNS 名解析、iptables/防火墙四层排查,区分「不在同一网络」「解析不了」与「被防火墙挡」三类原因。

发布于 2026/11/11 所属频道 Ubuntu 与 Debian

简短答案

容器之间不通,四类原因占绝大多数:不在同一自定义网络(默认桥接网络不能跨网络互通)、用 IP 而非服务名解析、DNS 名没注册(未在同一网络内用服务名)、主机侧防火墙/iptables 挡了。按「网络归属 → 解析方式 → 防火墙」顺序查。

现象对照

现象 含义
两个容器在各自默认网络,互 ping 不通 默认桥接网络隔离,需放同一自定义网络
同网络、用服务名解析失败 没在同一网络内注册服务名(容器名即服务名)
容器到外网通、容器间不通 网络/解析问题,不是防火墙
全都不通、含外网 主机 iptables/防火墙规则拦截

排查步骤

# 1. 看两个容器在哪些网络里
sudo docker network ls
sudo docker inspect <容器名> --format '{{range .NetworkSettings.Networks}}{{.NetworkID}} {{end}}'

# 2. 放同一个自定义网络后用服务名互访
sudo docker network create web
sudo docker run -d --name a --network web <镜像A>
# 容器 B 也用 --network web,容器名即服务名,B 里可用 a 访问

# 3. 看主机防火墙是否放行容器网段
sudo iptables -L -n | grep -i docker
sudo ufw status 2>/dev/null
  • 默认网络隔离:把容器放进同一个自定义网络(--network 指定),就能用容器名互访;网络名与容器名以实际编排为准。
  • 解析失败:确认两个容器在同一网络内且都用容器名/固定名访问(自定义网络内由容器名注册服务名,规则以工具文档为准)。
  • 仍不通:查主机侧 iptables/ufw,容器网段被规则挡掉会全断;规则以条目页说明为准,勿盲目清空。

注意:「容器 DNS 名解析」只在同一网络内生效,把两个网络里的容器用默认名互访必然失败——这是设计如此,不是 bug。容器基线见 Debian 13.7.0 DVD-1 条目,总览 Debian 索引;Ubuntu 侧容器用法参考 Ubuntu 索引。

操作小结

  1. docker network inspect 看两容器是否同网络。
  2. 不同网络就放同一自定义网络,用服务名互访。
  3. 解析失败查是否同一网络、是否用容器名互访。
  4. 全断查主机 iptables/ufw,别清空防火墙。

相关链接

本文内容基于公开资料整理,仅供参考;涉及授权与合规的操作请以厂商官方文档为准。

相关推荐下载

按本文主题匹配的官方原版镜像条目

配套 PE 工具

制作启动盘、备份数据、修复引导

其他常见问题

同一集合内的相近主题,按标签与关键词匹配