にファイルをインストールする際に問題がありますpodman
。私のファイル権限はありますが、0600
コンテナは使用できません。対応する--privileged
オプションまたはボリューム拡散オプションを使用するとz
機能します。しかし、私の質問は、次のいずれかのオプションを使用する必要がありますか?それとも別の方法があるかもしれません...
XYの問題を避けるために、このケースを説明します。certbot
DNS Cloudflareを使用して証明書を生成したいです。私はCentos 8を使用しているので、docker / podmanを介して行う必要があります。 CerbotにはCloudflareのキーが必要なので、~/.secrets/clodflare
パスからcloudflare.ini
ファイルを作成してコンテナにインストールしようとしています。
ベストアンサー1
最近私が学んだ教訓のいくつかを共有しましょう。私は専門家ではありません。私はあなたが何をすべきかを提案することはできませんが、--privileged
podmanを使用して実行するときに何が起こるかを説明しようとすることができます:z
。たぶんあなたはすでにこれを知っているでしょう。
私はあなたがpodman
ルートなしで、podman -v
すなわちsudo podman -v
。また、~/.secrets/clodflare
あなたが所有しており、UIDは1000
。
あなたの場合、既存のUnix権限(0600
または-rw-------
)とSELinux(container_file_t
、、user_home_t:
などfusefs_t
)の2つの権限問題があります。
UNIX権限
- コンテナ内では、ファイル/フォルダは次のよう
root
になります。 コンテナのプロセスがによって実行されると、ホストはユーザーによって
root
実行されます。したがって、rw-
そのフォルダ/ファイルに対する権限があります。私はこれがあなたの場合だと思います。--privileged
助けとは何の関係もありません:z
。コンテナのプロセスが他のユーザー(UIDなど)によって実行されている場合、ホストシステムはUID(デフォルトでは設定に従って)を使用する
1234
ユーザーによって実行されます。したがって、そのファイルに対してのみ権限があります。コンテナ内(またはホスト)内で所有権を変更するには、たとえば、またはを実行できます。しかし、私はこれがあなたに当てはまらないと思います。101233
/etc/subid
---
1234
101233
podman unshare chown -R 1234:1234 <path>
sudo chown -R 101234:101234 <path>
ホスト上のファイルがあなたの所有者ではない場合、コンテナはその設定に従って他の人の所有者になります
/etc/subid
。Googleを検索すると、このトピックに関する詳細情報を見つけることができます
podman namespace
。
- コンテナ内では、ファイル/フォルダは次のよう
SELinux
- SELinux 対応ホストには SELinux 分離の問題がまだ存在します。
- を使用して
--privileged
SELinuxの分離などを無効にできます。ただし、ファイル/フォルダのラベルを再指定することはありません。 Podmanを実行するたびに、次のように実行する必要がありますpodman -v <host-path>:<container-path> --previleged <image>
。 - を追加すると、
:z
Podmanがファイル/フォルダのラベルを再割り当てできるようになります。君はこれだけすればいい一度。ls -Z
ファイル/フォルダリストを使用すると、前後の違いを確認できますls -Zd
。ファイルまたはフォルダのラベルが正しく再割り当てされると、次回はなしでpodman -v <host-path>:<container-path> <image>
実行できます。:z
--privileged
- この問題は私が理解するには複雑すぎるので、より詳細に説明することはできません。の説明が
podman run
あるマニュアルページが役に立ちます。--privileged
-v
-security-opt