プロセスコンテナー
プロセスコンテナー(process container)
コンテナ」とは、1つまたは複数のサブシステムで使用されるパラメータのセットを共有するプロセスのグループです。cpuset の例では、コンテナは使用する権利を持つプロセッサのセットを持ち、コンテナ内のすべてのプロセスはその同じセットを継承します。他の(まだ存在しない)サブシステムは、コンテナを使用して、CPU時間、I/O帯域幅の使用、メモリ使用、ファイルシステムの可視性などに制限をかけることができる。コンテナは階層的であり、1つのコンテナが他のコンテナを保持することができる。
例として、右のようなシンプルな階層を考えてみましょう。コンテナ化されたゲストをホストするサーバーでは、CPU時間の使用を制御するために2つのトップレベルコンテナを設定することができます。ゲストには 90% の CPU 使用率が認められますが、管理者はシステムタスクを別のコンテナに配置し、常に少なくとも 10% のプロセッサを使用できるようにしたいと考えるかもしれません - そうすれば、ゲストが何をしていてもメールが配信され続けることになります。Guests」コンテナ内では、個々のゲストが特定の CPU 使用ポリシーを持つ独自のコンテナを持っています。
コンテナの仕組みは1つの階層に限定されるものではなく、管理者は必要なだけの階層を作成することができます。そのため、例えば上記のシステムの管理者は、ネットワーク帯域幅の使用量を制御するために、まったく別の階層を作成することができます。デフォルトでは、すべてのプロセスは同じコンテナに入りますが、特定のアプリケーションを実行するときにプロセスを別のコンテナに移すようなポリシーを設定することも可能です。つまり、Web ブラウザは利用可能な帯域幅の比較的高い部分を取得するコンテナに移動し、Bittorrent クライアントは利用可能な帯域幅がほとんどない不幸なコンテナに追いやられていることに気づくかもしれないのです。
異なるコンテナ階層は、互いに似通っている必要はありません。各階層には、1 つまたは複数のサブシステムが関連付けられており、サブシステムは 1 つの階層にのみ接続できます。複数の階層がある場合、システム内の各プロセスは、各階層で1つずつ、複数のコンテナに入ることになる。
コンテナの管理は、特別な仮想ファイルシステムを通じて行われる。ドキュメントでは、これを /dev/container にマウントするように書かれていますが、これは少し奇妙で、デバイスとは何の関係もありません。作成する階層ごとに、1つのコンテナファイルシステムインスタンスがマウントされます。サブシステムと階層の関連付けは、マウントオプションによってマウント時に行われます。デフォルトでは、すべての既知のサブシステムが階層に関連付けられますので、以下のようなコマンドを実行します。
www.DeepL.com/Translator(無料版)で翻訳しました。
関連