tarのPodmanエラー、ユーザーの名前空間に利用可能なUID、またはGIDが不足している可能性があります。

tarのPodmanエラー、ユーザーの名前空間に利用可能なUID、またはGIDが不足している可能性があります。

これを実行すると、podman run特に奇妙なエラーが発生しました。

❯ podman run -ti --restart=unless-stopped -p 80:80 -p 443:443 rancher/rancher:latest
✔ docker.io/rancher/rancher:latest
Trying to pull docker.io/rancher/rancher:latest...
Getting image source signatures
[... blob copying...]
Writing manifest to image destination
Storing signatures
  Error processing tar file(exit status 1): potentially insufficient UIDs or GIDs available in user namespace (requested 630384594:600260513 for /usr/bin/etcdctl): Check /etc/subuid and /etc/subgid: lchown /usr/bin/etcdctl: invalid argument
Error: Error committing the finished image: error adding layer with blob "sha256:b4b03dbaa949daab471f94bcfd68cbe21c1147e8ec2acfe3f46f1520db48baeb": Error processing tar file(exit status 1): potentially insufficient UIDs or GIDs available in user namespace (requested 630384594:600260513 for /usr/bin/etcdctl): Check /etc/subuid and /etc/subgid: lchown /usr/bin/etcdctl: invalid argument

何ですか「ユーザーの名前空間に使用可能なUIDまたはGIDが不足している可能性があります。」この問題をどのように解決できますか?

答え1

--storage-opt ignore_chown_errors=trueこの問題を解決するには、chmodエラーを無視し、コンテナが1人のユーザーだけをサポートするように強制する必要がありました。これについては、以下で読むことができます。「根のないポッドマンが私のイメージをインポートできないのはなぜですか?」。これはオプションpodmanではなく to ですpodman run。だからそれを使用すると、次のようになります。

podman --storage-opt ignore_chown_errors=true run [....]

私の場合、なぜならFUSEバージョンに必要なカーネルoverlayfsドライバがありません(を使用してインストールsudo apt install fuse-overlayfs)。

podman --storage-opt mount_program=/usr/bin/fuse-overlayfs --storage-opt ignore_chown_errors=true run [....]

答え2

受け入れられた回答の結果、すべてのPodman呼び出しに対して同じ結果を生成するグローバル設定が見つかりました。 Podmanは私が所有していない他のスクリプトによって呼び出されるので、これは私にとって非常に重要です。

私のシステムでコメントされた対応するフラグ(ignore_chown_errors)があるので、ファイルに次の行を追加しました。/etc/containers/storage.conf

ignore_chown_errors = "true"

この変更により、システム上のすべてのPodman呼び出しは、--storage-opt ignore_chown_errors=true各呼び出しにフラグを追加することなく正常に動作し始めます。

PS:私のファイルシステムに問題はないので、mount_programその設定ファイルの設定を変更してみませんでしたが、すべての呼び出しで同じグローバル効果があるとします。

関連情報