回答:
ここでいくつかの神話を払拭します。
これは悪い考えです。ごめんなさい。–ジェイコブ3月5日20:30
これが悪い考えだとは思わない。これは、実際にはchroot内のchrootです。一方では、無視できる方法でパフォーマンスを低下させる可能性があります(VM内でVMを実行する場合と比較して何もありません)。一方、より安全である可能性が高くなります(たとえば、ルートホストシステムとその構成要素からより分離されます)。
実際にこれを行う本当の理由はありますか?ここでの質問は、直面している実際の問題に関するものであることを忘れないでください。–ゾレダチェ3月5日21:52
ポスターの次のコメントに100%同意します。さらに、ここに質問を投稿するすべての人が、本当の理由があると考えている可能性が高いと考えるのは安全だと思います。
lxcはVMの移行(およびバックアップ+リカバリ)も簡素化できるはずだと思います。しかし、ホストOSへのアクセスがない場合(たとえば、安価なvps)についてはよくわかりません。–ミハイル3月6日11:17
実際、6月にPaaS / IaaSプロジェクトのLXCに飛び込んだときにこの質問に出会いました。特に、開発目的でクラウド環境をエミュレートできる機能に興味がありました。
LXCeption。深すぎます。–トムオコナー3月6日22:46
私はこれを読んだときに少し笑いましたが、そうではありません。
とにかく、私はこれをすべて読んだ後、Ubuntu 12.04 LTS Server EditionのストックインストールでVirtualBox環境を最終的にセットアップしました。これは100%可能だと思っていました。LXCをインストールした後、新しいコンテナーを作成し、apt-getでコンテナー内にLXCをインストールしました。インストールの大部分は順調に進行しましたが、最終的にcgroup-liteパッケージの問題が原因でエラーが発生しました。パッケージのインストール後にupstartジョブを開始できませんでした。
少し検索した後、stgraber.orgでこのすばらしい記事に出会いました(グッズは「コンテナのネスト」セクションの下に隠れています)。
sudo apt-get install lxc
sudo lxc-create -t ubuntu -n my-host-container -t ubuntu
sudo wget https://www.stgraber.org/download/lxc-with-nesting -O /etc/apparmor.d/lxc/lxc-with-nesting
sudo /etc/init.d/apparmor reload
sudo sed -i "s/#lxc.aa_profile = unconfined/lxc.aa_profile = lxc-container-with-nesting/" /var/lib/lxc/my-host-container/config
sudo lxc-start -n my-host-container
(in my-host-container) sudo apt-get install lxc
(in my-host-container) sudo stop lxc
(in my-host-container) sudo sed -i "s/10.0.3/10.0.4/g" /etc/default/lxc
(in my-host-container) sudo start lxc
(in my-host-container) sudo lxc-create -n my-sub-container -t ubuntu
(in my-host-container) sudo lxc-start -n my-sub-container
そのAppArmorポリシーをインストールしてデーモンを再起動すると、うまくいきました(ただし、ネットワーク範囲を変更することを忘れないでください!)。実際、特定のスニペットは非常に重要であると考えたため、記事がオフラインになった場合に備えて、http://pastebin.com/JDFp6cTBをミラーリングしました。
その後、sudo /etc/init.d/cgroup-lite start
成功し、順風満帆でした。
そのため、はい、別のLXCコンテナ内でLXCコンテナを起動することができます:)
Ubuntu 14.04(信頼できる)を使用すると、親コンテナの設定に次を簡単に追加できます。
lxc.mount.auto = cgroup
lxc.aa_profile = lxc-container-default-with-nesting
参照:https : //help.ubuntu.com/lts/serverguide/lxc.html#lxc-basic-usage (「ネスト」を検索)
ログイン画面が表示される前に長時間停止しないように、起動する前にネットワークを事前に設定してください。
HTH
~/.config/lxc/default.conf
ユーザーの場合、コンテナを作成するユーザーのアカウントでファイルを追加し、その2行を追加するとうまく機能します。
また...すべてのOpenstackを単一のLXCコンテナーにインストールできることを知っていました。その後、Openstackの各サービス(nova、swiftなど)はすべて、「マスター/親」コンテナ内の「ネストされた」lxcコンテナにインストールされます。
すべてをインストールするのに少し時間がかかりますが、完了したら、ラップトップまたはデスクトップ上に実験用の素晴らしいOpenStack環境があります。
OpenStackを停止する場合は、同じマスター/親コンテナーをlxc-stopしてOpenstackを再起動します。
はい、ネストされたLXCコンテナを実行できます。最初のコメントにもかかわらず、ネストされたコンテナが確かに役立つ場合とユースケースがあります。Stephane Graberの10部構成のLXCブログをご覧ください。特に、コンテナの入れ子のセクションをご覧ください-
ユースケース:マルチテナントLXC環境が必要だとします。LXCコンテナー構成ファイルに2つのコマンドを追加して、ネスティングを有効にして、各個人または組織ごとに1つのマスターコンテナーを作成します。次に、各マスターコンテナでネストされたサブコンテナを作成し、各グループに必要なアプリ、デスクトップなどをインストールします。マスターコンテナのデフォルトネットワークは10.0.3.xですが、ネストされたコンテナはデフォルトで10.0.4.xです(必要に応じて変更できます)。
Nested LXCを使用した最大の利点は何ですか?マスターコンテナをlxc-stopし、lxc-cloneする場合..マスターだけでなく、すべてのサブコンテナも複製します...これは、迅速なバックアップに便利です。このアプローチは、LXCライブマイグレーションw / CRIUを実行したい場合にも便利です。マスターコンテナの1つを別のマシンに移行すると...実際には、そのコンテナとすべてのネストされたコンテナも移行します。
最後に、LXCネスティングのクールな例として、Stephane Graberなどが、LXC、BPG、OSPFをすべて1つのLXCコンテナで使用する「インターネット」のシミュレータを構築しました。その1つのLXC「マスターまたは親」LXCコンテナー内には、それぞれ512個のネストされたLXCコンテナーがあり、それぞれがBGP / OSPFルーティング用にQuaggaを実行しています。これらの512個のインターネット「ノード」を合わせてインターネットをシミュレートします。この実装は、すべての参加者が2014年のNSECセキュリティ会議でインターネットのセキュリティを試すために使用されました。
このソースは、Gitugの次の場所にあります。 2014年、インターネットgithubコード用NSEC LXCシミュレーター