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がサポートする数のコンポーネントを分離することを選択できます。