Podmanのロード/保存を介してオフラインで複数のイメージをインストールする方法

Podmanのロード/保存を介してオフラインで複数のイメージをインストールする方法

画像ベースのアプリケーションを使用しています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.ymlviaを介して起動しても、docker-compose up -dすぐに明らかなエラーは発生しません。ただし、journalctl -fmariadbコンテナを起動して再起動しようとすると、無限のエラーループが表示されます。

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 savepodman 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のみ)

追加情報:https://github.com/containers/podman/issues/2669

関連情報