Chroot は、あなたに合った最も軽量な環境です。これにより、同じユーザー、同じネットワーク構成などで、別のディストリビューション (または同じディストリビューションの別のインストール) をインストールできます。chroot は、ファイルシステム レベルで大まかな分離を提供するだけです。 chroot でできることとできないことがまだわからない場合は、chroot についてこのサイトを参照すると役立つ場合があります。
次のステップアップをお探しの場合は、LXC がカーネルのメインラインに含まれるようになりました。 LXC ゲスト (コンテナーと呼ばれる) には、独自のファイルシステム、プロセス、およびネットワーク空間があります。コンテナーのルートは、ホストのルートでもあります。 LXC は、ゲスト ルートによる多くの偶発的なアクションから保護しますが、悪意のあるゲスト ルートからは保護しません (これは計画中の機能です。このスペースに注目してください)。
LXC に多少似ているその他のテクノロジは、VServer と OpenVZ です。 VServer や LXC ではなく OpenVZ が提供する重要な機能はチェックポイントです。実行中のマシンのスナップショットを取得して、後で復元できます。さらにもう 1 つの候補は、ホストで通常のユーザーとして実行されるプロセス内で完全な Linux システムを実行するユーザーモード Linux です。
別の OS インストールを試す目的であれば、chroot で問題ありません。実験的なインストールでサービスを実行したり、ネットワークで遊んだりしたい場合は、LXC を使用してください。スナップショットが必要な場合は、OpenVZ を使用してください。完全に独立したカーネルが必要で、メモリのオーバーヘッドが少ない場合は、User-mode Linux を使用してください。スナップショットと別のカーネルが必要な場合は、VirtualBox を使用してください。
ドッカー LXC を使いやすくします:
<ブロック引用>主な機能
ファイルシステムの分離 :各プロセス コンテナーは、完全に別個のルート ファイルシステムで実行されます。
リソースの分離 :cgroup を使用して、CPU やメモリなどのシステム リソースを各プロセス コンテナーに個別に割り当てることができます。
ネットワーク分離 :各プロセス コンテナは、独自の仮想インターフェイスと IP アドレスを使用して、独自のネットワーク名前空間で実行されます。
コピーオンライト :ルート ファイル システムはコピー オン ライトを使用して作成されるため、展開が非常に高速になり、メモリとディスクが節約されます。
ロギング :各プロセス コンテナーの標準ストリーム (stdout/stderr/stdin) が収集され、リアルタイムまたはバッチ検索のためにログに記録されます。
変更管理 :コンテナのファイルシステムへの変更を新しいイメージにコミットし、再利用してコンテナをさらに作成できます。テンプレートや手動構成は不要です。
インタラクティブ シェル :docker は疑似 tty を割り当て、任意のコンテナーの標準入力に接続できます。たとえば、使い捨ての対話型シェルを実行できます。
ボンネットの下
内部では、Docker は次のコンポーネントで構築されています。
-
Linux カーネルの cgroup およびネームスペース機能
-
AUFS、コピー オン ライト機能を備えた強力なユニオン ファイル システム
-
Goプログラミング言語
-
lxc は、Linux コンテナーの作成を簡素化する便利なスクリプトのセットです。
OpenVZ または Linux コンテナーを検討してください。どちらも、共通のカーネル上に独自のユーザーランドを持つ軽量の疑似仮想化環境を実装しています。
この段階では、OpenVZ はより成熟しています。