容器内执行命令,报错提示Operation not permitted
2024/02/21
927
问题信息
问题来源 | 产品大类 | 产品子类 | 关键字 |
---|---|---|---|
官方 | 安装部署 | 镜像 | 容器内root权限 |
问题现象描述
容器内跑脚本时,某些命令报Operation not permitted,如下图所示。
原因分析
容器内的用户权限受限。
解决措施
关于上述问题现场,主要提供以下几种解决方案:
- (推荐)可尝试将Docker 升级到新版本,如 v28.1.1修复了部分存储和网络相关的权限问题,但Operation not permitted通常与安全策略或文件权限相关,升级可能无法直接解决,如果无法解决,可继续尝试以下方法。
- seccomp默认限制部分系统调用(如chmod、mount),可能导致权限错误,因此可尝试在docker run时添加--security-opt seccomp=unconfined 关闭seccomp,再查看是否有解决问题。
- (有安全风险)如果是开发环境,可临时通过特权容器规避,容器启动命令添加--privileged,使容器内具有root权限。不过此方式会赋予容器几乎全部宿主机的内核能力,存在安全风险,因此不推荐长期使用。
docker run -it --privileged=true -name containername