LXCはモノリシックシステムではありません。これは、さまざまな方法でプロセスを分離するために使用できるカーネル機能のコレクションです。これらの機能をすべて使用して本格的なコンテナを作成するユーザー空間ツールです。しかし、個々の機能は、LXCを使用せずに単独でも使用できます。さらに、LXCはchrootを必要とせず、chrootを与えても、ホストシステムからディレクトリにバインドマウントして、ホストとコンテナ間の特定のディレクトリツリーを共有することができます。
たとえば、cgroupはLXCによってコンテナのリソース制限を設定するために使用されます。ただし、LXCツールをまったく使用しなくても、プロセスのグループにリソース制限を設定することができます。 /sys/fd/cgroup/memory
またはを直接操作して、使用が許可されているメモリまたはCPUの量を制限するプロセスをcgroupに入れることができます。または、systemd
を使用しているシステムでは、特定のサービスの.service
ファイルのMemoryLimit=200M
などを使用して、プロセスグループのメモリ制限を制御できます。
LXCを使用して軽量リソース管理を行う場合は、chrootの有無にかかわらず、これを行うことができます。 LXCコンテナを起動するときに、分離するリソースを選択できます。仮想化されたネットワークだけを持つコンテナを作成することができます。またはメモリの制限のみを持つコンテナですが、他のすべてをホストと共有します。隔離されるのは、コンテナの構成ファイルで指定されているものだけです。たとえば、lxc
には、ネットワークを隔離するだけのコンテナ定義例がいくつか付属しています。彼らはルートパーティションと他のほとんどすべてをホストと共有します。ここではそれは、ネットワークインタフェースを持っていないことを除いホストシステムと同一のコンテナを実行する方法は次のとおりです。
sudo lxc-execute -n foo -f /usr/share/doc/lxc/examples/lxc-no-netns.conf /bin/bash
あなたには、いくつかのホストで共有されるファイルではなく、他人をしたい場合は、次の2つの選択肢があります。共有ルートディレクトリを使用して、コンテナ内の異なるファイルにマウントすることができます。またはchrootを使うことができますが、共有したいファイルをコンテナにマウントしてください。
例えば、ここに/home
以外のホストですべてを共有コンテナの設定です。
lxc.mount.entry = /home/me/fake-home /home none rw,bind 0 0
それとも全く別のルートを持っているが、それでも/usr
のようないくつかのディレクトリを共有したい場合は、あなたがディレクトリにいくつかのディレクトリをマウントバインドすることができますが、と:それは代わりに、容器内に/home
オーバー/home/me/fake-home
をマウントをバインドこれをファイルシステムのルートとして使用してください。
だからあなたは多くのオプションを持って、そしてただ一つのコンポーネント、複数、またはLXCは、ニーズに応じて、サポートとして多くを隔離するように選択することができます。