web-dev-qa-db-ja.com

軽量の孤立したLinux環境

ホストを気にせずに台無しにできる、隔離された(ゲスト)Linux環境がコンピューターに必要です。例えば。パッケージ管理なしでソースから多くのものをインストールし、環境環境変数を汚染し、古いゲストが乱雑になりすぎると別のゲスト環境を生成します。

私はTinycore linuxでVirtualboxを使用するのを楽しんでいましたが、少なくともそれを使用する方法では、Virtualboxのオーバーヘッドが完全に必要であるとは思いません。 1つには、可能であれば、ホストと同じカーネルを使用したいと思います。

また、Linux From Scratchチュートリアルを実行していたとき、chrootについて少し学びました。これは、私が探しているもののように思えました。正直なところ、LFSで私が本当に理解できなかったことがたくさんありました。chrootもその1つです。私が現在の環境を台無しにするかもしれないと恐れていないのであれば、chrootをいじってみてください。

だから私は、仮想化を高速化するためにlinuxbox(PinguyOS btwを使用しています)にいるという事実を使用する仮想化プログラム、または分離された遊び場としてchrootを使用する方法のリファレンスを探しています。

15
math4tots

Chroot は、あなたに合う最軽量の環境です。これにより、同じユーザー、同じネットワーク構成などで、別のディストリビューション(または同じディストリビューションの別のインストール)をインストールできます。chrootは、ファイルシステムレベルである程度の大まかな分離しか提供しません。 chrootのこのサイト を参照すると、chrootで何ができて何ができないかわからない場合に役立ちます。

次のステップを探している場合は、 [〜#〜] lxc [〜#〜] がカーネルのメインラインに含まれています。 LXCゲスト(コンテナーと呼ばれる)には、独自のファイルシステム、プロセス、およびネットワークスペースがあります。コンテナのルートはホストのルートでもあります。 LXCはゲストルートによる多くの偶発的なアクションから保護しますが、悪意のあるゲストルートからは保護しません(これは計画された機能です。 this space を見てください)。

LXCにいくらか似ている他のテクノロジーは VServer および OpenVZ です。 OpenVZが提供するがVServerまたはLXCは提供しない重要な機能は checkpoints です。実行中のマシンのスナップショットを取得し、後でそれを復元できます。さらに別の候補は ser-mode Linux で、ホストで通常のユーザーとして実行されるプロセス内で完全なLinuxシステムを実行します。

別のOSインストールで実験するためには、chrootで問題ありません。試験的なインストールでサービスを実行したり、ネットワークで遊んだりしたい場合は、LXCを使用してください。スナップショットが必要な場合は、OpenVZを使用してください。完全に独立したカーネルが必要で、メモリのオーバーヘッドがほとんどない場合は、ユーザーモードLinuxを使用します。スナップショットと個別のカーネルが必要な場合は、VirtualBoxを使用してください。

Dockerを使用すると、LXCが使いやすくなります。

注目すべき機能

ファイルシステムの分離:各プロセスコンテナーは、完全に別のルートファイルシステムで実行されます。

リソース分離:cgroupを使用して、cpuやメモリなどのシステムリソースを各プロセスコンテナーに別々に割り当てることができます。

ネットワーク分離:各プロセスコンテナーは、独自の仮想インターフェイスとIPアドレスを持つ独自のネットワーク名前空間で実行されます。

Copy-on-write:ルートファイルシステムはcopy-on-writeを使用して作成されます。これにより、デプロイメントが非常に高速になり、メモリが安価でディスクが安価になります。

Logging:各プロセスコンテナーの標準ストリーム(stdout/stderr/stdin)が収集され、リアルタイムまたはバッチ検索用にログに記録されます。

変更管理:コンテナーのファイルシステムへの変更を新しいイメージにコミットし、再利用してコンテナーを作成できます。テンプレートや手動による構成は必要ありません。

インタラクティブシェル:dockerは疑似ttyを割り当て、任意のコンテナーの標準入力に接続して、たとえば使い捨てインタラクティブシェルを実行できます。

ボンネットの下

内部では、Dockerは次のコンポーネントに基づいて構築されています。

  • Linuxカーネルのcgroupおよび名前空間機能

  • AUFS、コピーオンライト機能を備えた強力なユニオンファイルシステム

  • Goプログラミング言語

  • lxc:Linuxコンテナーの作成を簡略化する便利なスクリプトのセット。

5
Janus Troelsen

OpenVZまたはLinuxコンテナーを調べます。どちらのコンテナーも、共通のカーネルに固有のユーザーランドを持つ軽量の疑似仮想化環境を実装しています。

この段階ではOpenVZはより成熟しています。

2
Rodger

多分これはあなたを助けることができます: aufs :高度な多層統合ファイルシステム

下位レベルにシステムがあります。その上に、aufsファイルシステムをマウントできます。変更(書き込み)は、このaufsファイルシステムでのみ行われ、その下の「実際の」ファイルシステムは変更されません。

0
Luis