我有一个 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