10

コンテナを作成せずにプロセスグループを使用したリソース管理にLXCを使用する方法はありますか?サンドボックス内で任意のコードを実行するサービスに取り組んでいますが、そのために私はハードウェアリソース管理にのみ関心があります。私はchrootingを望んでいません。これらのプロセスグループがメインファイルシステムにアクセスできるようにしたいだけです。

lxcは軽量だと言われましたが、私が見たすべての例では、すべてのlxcプロセスに対して新しいコンテナー(つまり、完全なOSを備えたdir)が作成されています。これが他のどのVMソリューションよりもはるかに軽いかはわかりません。

では、LXCを使用して、プロセスグループごとに個別のコンテナーを作成せずに、複数のプロセスグループを制御および管理できる方法はありますか?

4

1 に答える 1

22

LXCはモノリシックシステムではありません。これは、さまざまな方法でプロセスを分離するために使用できるカーネル機能のコレクションであり、これらすべての機能を一緒に使用して本格的なコンテナーを作成するためのユーザースペースツールです。ただし、個々の機能はLXCがなくても単独で使用できます。さらに、LXCはchrootを必要とせず、chrootを指定した場合でも、ホストシステムからコンテナーにディレクトリをバインドマウントして、ホストとコンテナー間で特定のディレクトリツリーを共有できます。

たとえば、cgroupはLXCがコンテナーにリソース制限を設定するために使用します。ただし、LXCツールをまったく使用せずに、プロセスのグループにリソース制限を設定するために使用できます。プロセスを操作する/sys/fd/cgroup/memory/sys/fs/cgroup/cpuacct直接、cgroupに入れて、使用できるメモリまたはCPUの量を制限することができます。または、を使用しているシステムを使用している場合は、特定のサービスのファイルでなどsystemdを使用して、プロセスのグループのメモリ制限を制御できます。MemoryLimit=200M.service

LXCを使用して軽量のリソース管理を行う場合は、chrootの有無にかかわらず実行できます。LXCコンテナーを起動するときに、分離するリソースを選択できます。したがって、仮想化されたネットワークのみでコンテナを作成でき、それ以外は何も作成できません。または、メモリ制限のみがあり、他のすべてをホストと共有しているコンテナ。分離されるのは、コンテナの構成ファイルで指定されているものだけです。たとえばlxc、ネットワークを分離するだけのコンテナ定義の例がいくつか付属しています。それらはルートパーティションと他のほとんどすべてをホストと共有します。ネットワークインターフェイスがないことを除いて、ホストシステムと同じコンテナを実行する方法は次のとおりです。

 sudo lxc-execute -n foo -f /usr/share/doc/lxc/examples/lxc-no-netns.conf /bin/bash

一部のファイルをホストと共有し、他のファイルは共有しない場合は、2つの選択肢があります。共有ルートディレクトリを使用して、コンテナ内で変更したいファイルをマウントすることができます。または、chrootを使用することもできますが、共有するファイルをコンテナーにマウントします。

たとえば、/home;を除くすべてをホストと共有するコンテナの構成は次のとおりです。代わりに、コンテナ内でバインドマウント/home/me/fake-homeします。/home

lxc.mount.entry = /home/me/fake-home /home none rw,bind 0 0

または、完全に異なるルートを使用したいが、のようないくつかのディレクトリを共有したい場合は、いくつかのディレクトリ/usrをディレクトリにバインドマウントし、それをファイルシステムのルートとして使用できます。

そのため、多くのオプションがあり、ニーズに応じて、1つのコンポーネントのみ、複数のコンポーネント、またはLXCがサポートする数のコンポーネントを分離することを選択できます。

于 2012-11-21T03:30:17.153 に答える