这个报错 不是 RocketMQ 自己的问题,而是 宿主机 Linux 内核没有打开 IPv4 转发,导致容器拿不到外部网络(NameServer、Broker 都连不上)。
两行命令即可永久修复,按顺序执行完 重启 Docker 服务 即可消失。
两行命令即可永久修复,按顺序执行完 重启 Docker 服务 即可消失。
一步开启 IPv4 转发(CentOS 7 / RHEL 7/8 通用)
# 1. 临时生效(立即打开)
sudo sysctl -w net.ipv4.ip_forward=1
# 2. 写入配置文件,开机永久生效
echo "net.ipv4.ip_forward = 1" | sudo tee -a /etc/sysctl.conf
# 3. 重载内核参数
sudo sysctl -p
# 4. 重启 Docker 守护进程
sudo systemctl restart docker
验证
# 容器里应该能 ping 通外网
docker run --rm alpine ping -c 2 8.8.8.8
若返回正常延迟,说明转发已生效,再启动 RocketMQ 容器就不会再出现
WARNING: IPv4 forwarding is disabled. Networking will not work.
如果用了 firewalld
CentOS 7 默认防火墙会拦截转发流量,再执行下面两条保险:
sudo firewall-cmd --permanent --add-masquerade
sudo firewall-cmd --reload
完成以上操作后,重新创建/启动 RocketMQ 容器,网络即可恢复正常。