これを実行すると、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
その設定ファイルの設定を変更してみませんでしたが、すべての呼び出しで同じグローバル効果があるとします。