温馨提示×

centos docker如何联网通信

小樊
38
2026-09-24 02:06:10
栏目: 智能运维

在 CentOS 上使用 Docker 时,“联网通信”通常分为几种场景,我按常见情况给你说明,并给出配置方法。


一、Docker 容器访问外网(最常见)

默认情况

  • Docker 安装后,容器默认就能访问外网
  • 原理:Docker 使用 bridge 网络 + iptables NAT

检查是否能联网

docker run --rm centos ping -c 4 www.baidu.com

如果不能:

# 检查 IP 转发
cat /proc/sys/net/ipv4/ip_forward
# 应为 1

# 开启 IP 转发
echo "net.ipv4.ip_forward=1" >> /etc/sysctl.conf
sysctl -p

二、容器之间通信(同一台 CentOS)

1️⃣ 默认 bridge(不推荐直接通信)

docker run -d --name c1 centos sleep 1000
docker run -d --name c2 centos sleep 1000

默认只能通过 IP 通信,不能用容器名。

2️⃣ 自定义 bridge 网络(推荐 ✅)

docker network create mynet

docker run -d --name c1 --network mynet centos sleep 1000
docker run -d --name c2 --network mynet centos sleep 1000

在 c1 中:

ping c2

✅ 容器名即可解析


三、容器访问宿主机(CentOS 本机)

CentOS 7 / 8

ping host.docker.internal

⚠️ 老版本 Docker 不支持,需要手动指定:

docker run --rm --add-host=host.docker.internal:host-gateway centos ping host.docker.internal

或直接使用宿主机 IP:

ip addr show

四、外部网络访问容器(端口映射)

docker run -d -p 8080:80 nginx

访问:

http:// CentOS_IP:8080

⚠️ 注意防火墙:

firewall-cmd --add-port=8080/tcp --permanent
firewall-cmd --reload

五、跨主机容器通信(多台 CentOS)

方案 1:Docker 原生(overlay)

  • 需要 Docker Swarm
docker swarm init
docker network create -d overlay mynet

方案 2:第三方网络

  • Flannel
  • Calico
  • Weave

常用于 Kubernetes


六、CentOS 防火墙 & SELinux 常见问题

防火墙

systemctl status firewalld

SELinux(调试时可临时关闭)

setenforce 0

七、快速排查 checklist ✅

  • [ ] ip_forward = 1
  • [ ] 容器使用自定义 network
  • [ ] 端口已 -p 映射
  • [ ] 防火墙放行端口
  • [ ] DNS 正常(/etc/resolv.conf)

如果你能具体说一下:

  • 是 容器↔外网
  • 还是 容器↔容器
  • 还是 外部↔容器

我可以直接给你一套可执行的命令示例。

0 踩