アクティブコンテナbuildah run
でプログラムを実行し、podman exec
buildah-run - Run a command inside of the container.
podman-exec - Execute a command in a running container
しかし、オプションbuildah run
は1つだけ--hostname
サポートされていますか?これらのコマンドが一貫していないのはなぜですか?なぜ彼らは異なる能力を持っていますか?
言い換えれば、buildahには現在破損している--hostname
オプションがあります。しかし、なぜ動作するのか分かりません。 Podmanを使用すると、このオプションは次のように設定されます。放射コンテナとビルダーが完成したので、議論がなければなりませbuildah from
んか?buildah from
--hostname
答え1
buildah run は --hostname をサポートする podman run に近いです。
podman execは実行中のコンテナで実行する必要があり、buildah runとpodman runは新しいコンテナを作成します。
ところで、buildah runの目的は、コンテナを実行してコンテナイメージを構築するのに役立ちます。 Podmanの実行はより一般的な目的です。
答え2
その理由は少し説明が必要ですが、
- コンテナは、すべての名前空間と関数の概念的にリンクされたコレクションです。
- コンテナのプロセスが実行中の場合、コンテナは実行中(ステータス)です。今実装する。
- ほとんどのネームスペース(私の意見ではユーザーネームスペースを除く)は、以下を設定する必要があります。今後コンテナが実行中です。
- 名前空間の変更は、その名前空間のすべてのプロセスに表示されます。
buildah run
実行されていないコンテナを起動し、これらの名前空間を初期化します。名前空間内で他の何も実行されないことがわかるので、名前空間の変更による副作用について心配する必要はありません。podman exec
実行中のコンテナを取得するのと同じPID(および他の)名前空間で別のプロセスを開始します。名前空間を初期化しないため、名前空間内のすべての変更は、その名前空間に関連付けられている他のすべてのプロセスに影響します。したがって、名前空間の変更は無効になります。