为了让容器不用 root 运行,常见做法是先以 root 拷贝代码与虚拟环境、创建非 root 用户、再在底部 RUN chown -R。这看似成功,却触发了"层重复惩罚":因为 Docker 层是不可变的,RUN chown 对已冻结层里的文件触发 Copy-on-Write,把整份数据再复制一遍只为改属主元数据——实测 91.7MB 的 /opt/venv 被复制两次。有人试图"优化"只 chown 应用目录,却因 /opt/venv 仍归 root 而让 Python 以 PermissionError 崩溃。正解是 BuildKit 的 COPY --chown=appuser:appuser,在数据写入层的瞬间就打上属主,不再产生独立的修改层。