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

相同Dockerfile在Ubuntu 22.04构建失败,Ubuntu 20.04正常求助

问题分析与解决方案

问题核心

你遇到的是Docker版本差异导致的文件系统权限兼容性问题:Ubuntu 22.04上的Docker 20.10.24默认启用了overlay2存储驱动的metacopy特性,该特性与ruby:3.1.4-buster(基于Debian Buster)镜像中的apt upgrade操作存在冲突,触发了Python缓存文件写入权限拒绝错误。旧版本Docker(20.10.12)未启用该特性,因此构建正常。

解决方案

方案1:避免全量apt upgrade(推荐)

ruby:3.1.4-buster是官方维护的稳定基础镜像,全量升级不仅无必要,还易引入兼容性问题。修改Dockerfile如下:

FROM ruby:3.1.4-buster
# 仅更新包索引,按需安装特定包即可
RUN apt update

方案2:临时调整权限后执行升级

如果业务必须执行全量升级,可在apt upgrade前手动创建Python缓存目录并开放权限:

FROM ruby:3.1.4-buster
RUN mkdir -p /usr/lib/python3.7/__pycache__ && chmod 777 /usr/lib/python3.7/__pycache__ \
    && apt update && apt upgrade -y

方案3:禁用Docker的metacopy特性

修改Ubuntu 22.04上的Docker daemon配置,关闭overlay2的metacopy特性:

  1. 编辑/etc/docker/daemon.json文件,添加以下内容:
{
  "storage-driver": "overlay2",
  "storage-opts": [
    "overlay2.metacopy=off"
  ]
}
  1. 重启Docker服务:
sudo systemctl restart docker

之后重新执行构建即可正常完成。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 14:17:45