1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

 前回の続きとして、コンテナの仕組みについて説明します。前回の記事はこちら↓

 コンテナにはLinuxの技術が使われています。コンテナとは何かを理解するために、コンテナで使われている技術について説明していきます。

■ プロセスとは

 まずは、Linuxのプロセスについて理解しておきましょう。プロセスとは、実行中のプログラムのインスタンスです。
【図 プロセスとは】
1章-プロセスとは.png

 例えば、NginxやPythonのアプリケーションなどを実行すると、そのたびにプロセスが1つ生成されます。Linuxでは、全ての処理がプロセス単位で管理されます。そして、全てのプロセスにプロセスID(PID)が割り当てられます。

 また、プロセスはお互いのプロセスが見えています。そのため、権限があれば他のプロセスを終了させることもできます。そして、1つのプロセスがホストOSのリソースを占有してしまうこともあります。例えば、CPUを使いすぎるなど。

■ Namespaceとは

 Namespace(名前空間)とは、プロセスに見えるシステムリソースの範囲を分ける仕組みです。
【図 Namespaceとは】
1章-Namespaceとは.png

 通常、全てのプロセスは互いに見えますが、Namespaceを使うと仮想的な隔離空間を作れます。例えば、通常はプロセスIDの重複はできません。ですが、隔離空間であれば同じプロセスIDを使用できます。上の図で言うと、Namespace1とNamespace2で同じプロセスID=1を使用しています。他にも、同じ名前のユーザーを作成することもできます。

 ホストOSから見ると、Namespaceも1つのプロセスです。ですが、NamespaceからはホストOSや、他のNamespaceのリソースを見ることができません。これにより、Namespaceがまるで別のマシンのように振る舞うことができます。

■ cgroupとは

 cgroup(Control Group)とは、プロセスに割り当てるリソースの上限や優先度を制御する仕組みです。
【図 cgroupとは】
1章-Cgroupとは.png

 cgroupでは、ホストOSのリソースを分割してNamespaceに割り当てることができます。Namespaceに、どのcgroupを使うかを設定することで、リソースを制御できます。このため、特定のNamespaceによるリソースの使い過ぎを防止しています。

■ コンテナとは

 コンテナの正体は、Namespaceとcgroupです。これらを組み合わせて使用することで、隔離されたプロセス(アプリケーション)実行環境を作ることができます。

■ コンテナエンジンとは

 Linux上でNamespaceとcgroupを管理することはかなり面倒です。それらを管理してくれるのがコンテナエンジンです。

 コンテナエンジンはたくさんあるのですが、その中でもDockerが使われています。現在ではコンテナのデファクトスタンダードとなっています。

 投稿のやる気につながるため、記事の内容が少しでも良いと思ったら、いいねやフォローしてくださいね。

 なお、続きが気になる方は以下の書籍で全文を掲載しています。
[手を動かしながら学ぶDocker入門: たった1冊でDockerを完全マスター!]

1
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?