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

Ubuntu18.04环境下Docker容器内ping报Permission denied如何排查

Ubuntu 18.04 Docker容器ping报错socket: Permission denied排查步骤

1 验证容器NET_RAW能力限制

Docker默认会删除容器不必要的内核能力,ping操作依赖NET_RAW能力创建ICMP socket,可先加参数临时放开测试:

  • 执行测试命令:
    docker run --rm -it --cap-add NET_RAW ubuntu:trusty ping 192.168.1.1
    如果命令可正常运行,说明是默认能力限制导致的问题。

2 检查seccomp安全策略拦截

Ubuntu 18.04 官方源安装的Docker默认启用seccomp安全策略,会拦截部分系统调用,对Ubuntu 14.04(trusty)这类旧版本镜像兼容存在异常,可临时关闭策略验证:

  • 执行测试命令:
    docker run --rm -it --security-opt seccomp=unconfined ubuntu:trusty ping 192.168.1.1
    如果执行成功,说明是seccomp策略拦截了ICMP socket创建请求。

3 检查宿主机内核ping权限参数

宿主机内核的ping_group_range参数会限制可创建ICMP socket的用户组范围,即使容器内是root也会受该参数约束:

  • 查看当前参数配置:
    sysctl net.ipv4.ping_group_range
    正常默认输出为net.ipv4.ping_group_range = 0 2147483647,如果范围过小就会触发权限报错。
  • 临时调整参数验证:
    sudo sysctl -w net.ipv4.ping_group_range="0 2147483647"
    调整后再次执行原ping命令测试是否恢复正常。

4 检查Docker daemon全局配置

如果上述临时调整NET_RAW能力可解决问题,但不想每次启动容器都手动加参数,可检查daemon是否有全局禁用NET_RAW的配置:

  • 查看daemon配置文件:
    cat /etc/docker/daemon.json
    如果配置中存在cap-drop项且包含NET_RAW,删除对应配置后重启Docker服务即可:
    sudo systemctl restart docker

5 验证镜像完整性

老旧的Ubuntu trusty镜像可能存在内部权限配置异常,可拉取官方最新镜像重试:

  • 拉取官方镜像:
    docker pull ubuntu:trusty
    拉取完成后重新执行ping命令测试。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.28 14:54:01