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

Dockerfile中RUN指令间文件所有者异常变更问题咨询

Docker 20.10.25中文件所有者在快照子卷中异常变为root的问题

问题复现

使用以下Dockerfile:

FROM debian
RUN touch /foo \
 && chown backup /foo \
 && ls -l /foo \
 && sleep 10
RUN ls -l /foo

正常预期结果

两次ls输出均显示/foo的所有者为backup:

-rw-r--r-- 1 backup root 0 Aug 12 16:02 /foo
[...]
-rw-r--r-- 1 backup root 0 Aug 12 16:02 /foo

异常现象(Docker 20.10.25)

在升级到Docker version 20.10.25, build 20.10.25-0ubuntu1~22.04.1的PopOS环境中,第二个RUN的输出显示/foo所有者变为root:

-rw-r--r-- 1 backup root 0 Aug 12 16:34 /foo
[...]
-rw-r--r-- 1 root root 0 Aug 12 16:34 /foo

额外测试发现:chown后文件所有者正确,但生成镜像快照子卷时,该子卷内的文件所有者被错误重置为root。

结论

这是Docker的已知Bug,并非新特性,根源在于Ubuntu/Debian系发行版提供的20.10.25版本Docker包中,overlay2存储驱动的层快照处理逻辑存在缺陷,导致文件权限属性未被正确持久化到后续镜像层中。

解决方案

  • 临时回退版本:降级到之前的稳定版本(如20.10.24)可规避该问题
  • 升级修复版本:升级到Docker 20.10.26及以上版本,官方已修复该快照权限异常问题
  • 临时 workaround:在chown命令后添加一个微小的文件修改操作(比如echo "" >> /foo),强制驱动正确记录文件权限属性到快照中

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.13 10:51:07