軽量の分離されたLinux環境


15

私は、ホストについて心配することなく台無しにできる、コンピューター上の分離された(ゲスト)Linux環境が必要です。たとえば、パッケージ管理なしでソースから多くのものをインストールし、環境環境変数などを汚染し、古いゲストが乱雑になると別のゲスト環境を生成します。

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

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

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

回答:


16

Chrootは、あなたに合った最も軽い環境です。同じユーザー、同じネットワーク構成などで、別のディストリビューション(または同じディストリビューションの別のインストール)をインストールできます。Chrootはファイルシステムレベルで大まかな分離のみを提供します。ブラウジングのchrootのためにこのサイトをあなたはまだわからchroot環境ができることとできないことをいないのであれば、かもしれないのヘルプ。

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

LXCに多少似ている他のテクノロジーは、VServerOpenVZです。OpenVZが提供するがVServerまたはLXCではない重要な機能はチェックポイントです。実行中のマシンのスナップショットを作成して、後で復元できます。さらに別の候補は、ホストで通常のユーザーとして実行されるプロセス内で完全なLinuxシステムを実行するユーザーモードLinuxです。

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


LXCは現在スナップショットをサポートしています。
baptx

5

DockerはLXCを使いやすくします:

注目すべき機能

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

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

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

コピーオンライト:ルートファイルシステムはコピーオンライトを使用して作成されます。これにより、展開が非常に高速になり、メモリとディスクが安価になります。

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

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

対話型シェル:dockerは、疑似ttyを割り当てて、コンテナの標準入力にアタッチできます。たとえば、使い捨ての対話型シェルを実行できます。

フードの下

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

  • Linuxカーネルのcgroupおよびネームスペース機能

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

  • Goプログラミング言語

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


1
これは質問に対する答えを提供しません。著者に批判や説明を求めるには、投稿の下にコメントを残してください。
アントン

@アンソン:なぜそれは答えではないのですか?「ホストと同じカーネル」である「分離された(ゲスト)Linux環境」が要求されました。
ヤヌストロエルセン

@JanusTroelsen、「質問に根本的に答えない回答は削除される可能性があります。-これは...やっと複数の外部サイト」へのリンク以外の回答含んよくある質問ドッカーが何をするのかを説明し、それが他の類似のソフトウェアとは異なりものにしてくださいを。
マナトワーク

2

OpenVZまたはLinux Containersを調べてください。どちらも、共通のカーネル上の一意のユーザーランドを備えた軽量の擬似仮想化環境を実装しています。

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


はい、製品でも使用されています...より深刻な使用にはXenをお勧めします。
アキ

0

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

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

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.