You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

同网络下无root权限Podman容器无法互相连接问题排查

Podman同网络容器端口连接失败及veth对不可见问题排查

问题概述

使用Podman运行容器时,同一自定义bridge网络(my-network)下的容器2无法连接容器1暴露的6379端口,执行连接命令返回"Connection refused";同时以无root权限运行Podman时,主机上看不到veth网络设备,需排查问题原因及解决方向。

环境信息

网络列表

$ podman network ls
NETWORK ID    NAME                 DRIVER
da3b514ee40c  my-network           bridge
2f259bab93aa  podman               bridge

容器1关键配置(podman container inspect截取)

"SandboxKey": "/run/user/1000/netns/netns-447e75e3-aa0e-6449-1c45-33c4af3baf84",
"Networks": {
     "my-network": {
          "Gateway": "10.89.0.1",
          "IPAddress": "10.89.0.24",
          "Aliases": [
               "database",
               "b81cd9ab1544"
          ]
     }
},
"NetworkMode": "bridge",
"PortBindings": {
     "6379/tcp": [
          {
               "HostIp": "127.0.0.1",
               "HostPort": "6379"
          }
     ]
}

容器2关键配置(podman container inspect截取)

"SandboxKey": "/run/user/1000/netns/netns-c9ad66f3-d49d-d49a-4563-2de551197891",
"Networks": {
     "my-network": {
          "Gateway": "10.89.0.1",
          "IPAddress": "10.89.0.38",
          "Aliases": [
               "49b7b13c02e7"
          ]
     }
}

测试命令及结果

[root@49b7b13c02e7 /]# nc -z -v 127.0.0.1 6379
Ncat: Connection refused.

排查方向

  • 修正容器间连接目标
    当前容器2使用127.0.0.1:6379连接,指向的是容器2自身的回环地址,而非容器1。应改用容器1的IP(10.89.0.24)或网络别名(database)进行测试:

    nc -z -v 10.89.0.24 6379
    # 或使用别名
    nc -z -v database 6379
    
  • 验证容器1端口监听状态
    进入容器1,确认服务是否真的在监听6379端口,且监听地址不是仅127.0.0.1(若服务仅绑定回环地址,容器间无法通过容器IP访问):

    podman exec -it <容器1ID> ss -tulpn | grep 6379
    
  • 澄清端口映射的作用
    容器1的PortBindings是将容器6379端口映射到主机的127.0.0.1:6379,仅用于主机访问容器服务,容器间通信不需要依赖端口映射,直接使用容器内部端口即可。

  • 无root模式下查看veth对的正确方式
    无root权限运行Podman时,网络命名空间属于用户级,主机默认无法看到veth设备,需切换到对应容器的网络命名空间查看:

    1. 从容器的SandboxKey获取网络命名空间路径,如容器1的路径为/run/user/1000/netns/netns-447e75e3-aa0e-6449-1c45-33c4af3baf84
    2. 使用以下命令查看该命名空间内的veth设备:
      ip netns exec netns-447e75e3-aa0e-6449-1c45-33c4af3baf84 ip link
      # 或使用nsenter
      nsenter --net=/run/user/1000/netns/netns-447e75e3-aa0e-6449-1c45-33c4af3baf84 ip link
      
  • 验证自定义网络连通性
    在容器2中ping容器1的IP或别名,确认基础网络是否连通:

    ping 10.89.0.24
    # 或使用别名
    ping database
    

    若ping不通,检查自定义网络配置:

    podman network inspect my-network
    

    确认子网、网关配置正常,同时排查主机防火墙是否拦截了容器间的网络流量。

  • 检查无root模式网络配置
    确认用户专属的网络命名空间是否正常创建:

    ls /run/user/1000/netns/
    

    查看用户级bridge设备是否存在:

    ip link show
    

内容的提问来源于stack exchange,提问作者mSatyam

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.10 10:05:32