chrootとバインドマウントを持つsystemd-nspawn?

chrootとバインドマウントを持つsystemd-nspawn?

systemd-nspawnro インストール内部で特別な作業は行われますか?それとも、roのインストールに適したchroot他の実行方法を提供しますか?これchroot--bindprocsys文書によると、

chroot(1) と似ていますが、ファイルシステム階層、プロセスツリー、さまざまな IPC サブシステム、ホスト、ドメイン名を完全に仮想化するので、より強力です。

これがどのように定義されているのかよくわかりません。

  • 仮想化されたファイルシステム階層

    chrootこれはルートを変更する機能ではありませんか?

  • とプロセスツリー

    これが何を意味するのかよく分からない。

  • さまざまなIPCサブシステム

    どのサブシステムがありますか?誰かがこれが正確に何を意味するのか教えてもらえますか?

  • ホスト名とドメイン名

    私もこれがどういう意味なのかよくわかりませんか?これはまさにそうではありませんか/proc/sys/kernel/domainname/proc/sys/kernel/hostname

chroot私はスクリプトを使用しましたmount --bind。これはもっと説得力があるようですが、追加機能についてはあいまいです。これは私にどんな新しいものをもたらしますか?

ベストアンサー1

  • 仮想化されたファイルシステム階層

マウントネームスペースを使用してください。chroot名前空間の下でファイルシステムをマウントおよびマウント解除することができ、外部またはマウントされている他の名前空間から非表示になるため、より強力です。

見てこの記事Linuxネームスペース(特にマウントネームスペース)の役割を簡単に説明します。

  • とプロセスツリー

これは、名前空間内で新しいPID番号を取得することを意味します。名前空間内のPID 1は外部のPID 12001、内部のPID 40は外部のPID 13987です。特に、すべてのPIDが名前空間内にマップされるわけではないため、ps -efinsideなどのコマンドを使用すると、その名前空間のプロセスのみが表示され、外部または他のPID名前空間プロセスのプロセスは表示されません。

上記の記事では、PID名前空間の良い概要も提供します。

  • さまざまなIPCサブシステム

共有メモリ、セマフォ...コマンドが表示する内容ですipcs。繰り返しますが、私が指摘した記事には、これについての詳細が記載されています。 (SysV IPCやこのコマンドについて聞いたことがない場合はipcs無視してください。)

  • ホスト名とドメイン名

これは実際にはUTS名前空間であり、記事でさらに詳細を提供します。

コマンドが返す内容を仮想化します(コンテナ内を見るunameことができます)。uname -aしかも注文もhostnameありますdomainname。はい、/procあなたが言った2つのファイルも同じです。

簡単に言えば、これはsystemd-nspawnコンテナの分離を提供するためにLinuxネームスペースを使用していることを示しています。これは、Dockerなどの他のコンテナ技術でも使用されます。

おすすめ記事