我正在根据图像使用应用程序docker.io/library/mariadb:10.7
。可以提取图像并将其保存在 tarball 中:
podman pull \
docker.io/photoprism/photoprism:latest \
docker.io/library/mariadb:10.7
podman save \
-o images.tar \
docker.io/photoprism/photoprism:latest \
docker.io/library/mariadb:10.7
并通过以下方式离线安装在不同的系统上load
:
docker load -i images.tar
上面的命令成功运行,我可以通过以下方式查看图像podman images
:
REPOSITORY TAG IMAGE ID CREATED SIZE
docker.io/photoprism/photoprism latest 3bd51d37096b 4 days ago 1.33 GB
docker.io/library/mariadb 10.7 3bd51d37096b 4 days ago 1.33 GB
启动docker-compose.yml
viadocker-compose up -d
不会立即导致明显的错误。但journalctl -f
向我展示了启动和重新启动 mariadb 容器尝试的无休止的错误循环:
container init (image=docker.io/library/mariadb:10.7...
container start(image=docker.io/library/mariadb:10.7...
container died (image=docker.io/library/mariadb:10.7,...
container restart(image=docker.io/library/mariadb:10.7,...
container init(image=docker.io/library/mariadb:10.7,...
#... and so on
现在,这一点很重要:通过docker-compose pull
/podman pull
直接在线提取图像,否则保持上述步骤 - 仅在同一系统内 - 工作正常!
podman save
因此我猜想,这一定是podman load
不同机器(相同架构,Fedora)的问题。
读过这个问题我试过
podman unshare podman load -i images.tar
没有成功。
最后一点:podman 在用户空间中运行,如果这很重要的话:
export DOCKER_HOST="unix://$XDG_RUNTIME_DIR/podman/podman.sock
systemctl --user enable --now podman.socket
我如何进一步调试这个问题?可能的原因是什么(用户空间权限,...)以及适当的修复方法?
答案1
-m
经过更多调查:在 tarball 中保存多个图像时,您需要添加该标志。
podman save -m -o images.tar \
docker.io/photoprism/photoprism:latest \
docker.io/library/mariadb:10.7
-m, --multi-image-archive
将附加参数解释为图像而不是标签并创建多图像存档(仅适用于 docker-archive)