为何远程Docker 17.09无法安装libpaper1,升级20.10.7后才可安装?
升级Docker后才能安装libpaper1的原因
你遇到的安装报错核心是statx系统调用被拦截:
stat: cannot statx '/etc/papersize.dpkg-inst': Operation not permitted dpkg: error processing package libpaper1:amd64 (--configure): installed libpaper1:amd64 package post-installation script subprocess returned error exit status 1
statx是Linux内核4.11版本新增的系统调用,用于获取文件元信息。Docker 17.09版本发布时,该调用还没有被纳入默认的seccomp安全策略白名单,容器内发起的statx请求会被默认拦截,返回操作不允许的错误。而libpaper1的后置配置脚本刚好需要调用statx访问临时配置文件,所以在旧版本Docker环境下安装会失败。
Docker 18.06及之后的版本已经将statx加入默认的系统调用白名单,20.10.7属于更新的稳定版本,自然支持该调用,因此升级后安装流程可以正常完成。
CircleCI默认使用17.09版本Docker的原因
平台默认工具版本的选择优先保障存量业务的兼容性,而非功能的先进性。17.09作为较早的稳定版本,已经经过海量项目的长期验证,运行逻辑固定,绝大多数老的构建流程都适配了该版本的特性。如果直接将默认版本升级到更高的Docker版本,新旧版本之间的行为差异(比如安全策略、权限逻辑、命令参数的变化)会导致大量存量用户的构建毫无征兆地失败,影响业务稳定性。
有新版本特性需求的用户可以手动指定Docker版本,既满足了新场景的需求,也不会对存量业务造成影响。
内容的提问来源于stack exchange,提问作者Janus Troelsen
相关产品推荐
相关产品推荐

