由于磁盘 I/O 错误,Fedora 34 Docker 镜像无法构建(Digital Ocean App Platform 主机)

由于磁盘 I/O 错误,Fedora 34 Docker 镜像无法构建(Digital Ocean App Platform 主机)

我有一个 Dockerfile,其基本内容如下:

# syntax=docker/dockerfile:1
FROM fedora:34
RUN dnf --assumeyes install python3 python3-pip python3-gdal

它在各种主机上本地运行良好。然而,当 Digital Ocean App Platform 尝试构建镜像时,命令RUN失败,并显示:

INFO[0012] Running: [/bin/sh -c dnf --assumeyes install python3 python3-pip python3-gdal]
error: sqlite failure: CREATE TABLE IF NOT EXISTS 'Packages' ...: disk I/O error
error: cannot open Packages index using sqlite - No such file or directory (2)
error building image: error building stage: failed to execute command: waiting for process to exit: exit status 1

我能找到的唯一相关信息是一个旧的(2015 年)错误https://bugzilla.redhat.com/show_bug.cgi?id=1213602其中提到了配置的主机层存储引擎的问题overlayfs...但所有建议的修复都失败了,例如添加:

RUN touch /var/lib/rpm/*

作为第一个命令。

当我已打开 Digital Ocean 支持票... 看起来 DO 无法解决该问题,而且对于一个非常简单的 Dockerfile 来说,这似乎是一个非常奇怪的错误。它在本地构建良好,这是否意味着存在主机配置问题?

有人见过这个吗?Docker 主机提供商上的 Fedora 基础镜像是否存在常见问题?

我被难住了。我的 Google 技能让我失望了。

答案1

只是猜测,但错误似乎影响了sqlite使用的后端dnf。这种错误与磁盘写入有关。您是否检查过此主机上是否为容器运行时(例如 Docker)分配了足够的磁盘空间。以下命令可以帮助检查磁盘使用情况。

docker system df

来源

例如,您还可以检查磁盘上的可用空间。

df -h /var/lib/docker

相关内容