全新openSUSE/Tumbleweed Docker容器zypper无法运行问题问询
问题根因
该报错是最新版openSUSE Tumbleweed镜像与低版本Docker默认安全规则不兼容导致的:Tumbleweed的基础系统组件(如glibc)使用了部分近年新增的Linux系统调用,而低于20.10版本的Docker默认seccomp安全策略未放行这些调用,系统调用被拦截后就会触发zypper运行时的权限错误。openSUSE Leap镜像的基础组件版本更低,未用到这些新系统调用,因此可以正常运行。
解决方案
临时验证方案
运行容器时添加参数放宽seccomp限制即可正常执行zypper命令:
docker run --rm --init -it --security-opt seccomp=unconfined opensuse/tumbleweed bash -c "zypper update"
该方案仅适合临时测试使用,无限制的seccomp配置会降低容器安全性,不建议在生产环境直接使用。
长期稳定方案
- 升级Docker引擎到20.10及以上的最新正式版本,新版本Docker的默认seccomp配置已经收录了Tumbleweed所需的系统调用规则,无需额外添加参数即可正常运行容器。
- 如果无法升级Docker版本,可以手动导入适配新系统调用的seccomp配置文件,运行容器时指定自定义配置即可:
docker run --rm --init -it --security-opt seccomp=/path/to/custom/seccomp.json opensuse/tumbleweed bash -c "zypper update"
内容的提问来源于stack exchange,提问作者Mizux
相关产品推荐
相关产品推荐

