ping: Operation not permitted

问题描述

通常在 rootless 的容器里执行 ping 会报错,

$ ping 192.168.1.1
bash: /bin/ping: Operation not permitted

解决方案

如果只是在 docker exec 容器里进行网络调试,可以加上 --privileged 参数获取全部权限:docker exec --privileged -it nextcloud bash

如果是想让原本的容器就具备 ping 的能力,那只有重新建容器。因为 getcap /bin/ping 可以看到结果 /bin/ping cap_net_raw=ep。 而 ping 需要的权限是 cap_net_admincap_net_raw+ep,于是需要重新建容器,加上 --cap-add 参数:docker run --cap-add net_raw --cap-add net_admin