コンテナと応用技術

​2023/10/21

コンテナと応用技術

名前:坂島悠太
学籍番号:21060009

進化するコンテナ周辺技術

 コンテナの考え方は、1979 年にUnix系のオペレーティングシステムでchrootがリリースされたことに始まるとされ、2006年にはGoogle社によってProcess Containersという機能でコンテナという名称が使われた。そして我々開発者にとってローカルの環境でもお世話になることが多いdockerが生まれたのは2013年である。ここでコンテナ技術の概要を紹介する前に比較を行うため、まずは仮想マシンについて紹介したい。仮想マシンというのは動作中のOSの中で仮想的にOSのファイルやライブラリを作成し、エミュレートして、アプリケーションを動作させることができるシステムであり、Virtual boxやVMware playerといったソフトウェアで実現できる。それに対して、コンテナ技術というのは既存のOSやカーネルはそのまま利用して、仮想的なアプリケーションを動作させるため、余分なオーバーヘッドが少なく、仮想マシンに比べて多くの仮想環境を動作させることができる。

コンテナ技術が使われる理由

 コンテナ技術は様々な場面で応用が効くことから、規模に関わらない世界中の組織で使われている。なぜそこまでコンテナ技術がもてはやされるのだろう。私の見解では、はじめにその移植性の高さにあると考える。この移植性の高さを活かせば柔軟なシステムが構築でき、開発速度も向上することが見込める。例えば今まではプログラムのアップデートを行い、本番環境に適応する際、手元の環境と本番の環境の差異によって、適応して初めて起こるバグなどに悩まされることがあった。これがコンテナ技術の移植性の高さを利用して、手元に本番環境を再現し、そのまま本番環境に移植することで、その差異を少なくすることができる。更に、優れた移植性を活かして、環境のコピーも簡単に行える。そのため、負荷に応じてフレキシブルに平行スケーリングを行うことができる。そしてこのコンテナの管理や死活監視などを行うツールはオーケストレーションツールと呼ばれ、Kubernetesなどが有名で、dockerコンテナの管理はKubernetesが行っている。こういったオーケストレーションを大規模に行うことで、大量のリクエストにも答えられる柔軟なシステムが作成できるため、コンテナ技術は幅広く利用されるのだろうと考える。このKubernetesによるコンテナのオーケストレーションの様子を画像で表したものを下に添付しておくので参考にしてほしい。

参照

[コンテナの歴史](https://zenn.dev/hosu/articles/02edc4d4d0c4bd )
[福岡デザインアンドテクノロジー専門学校、CND対策授業]
[Docker for Win/MacのKubernetes統合が正式版に。Stable Channelでリリース開始 - Publickey](https://www.publickey1.jp/blog/18/docker_for_winmackubernetesstable_channel.html )