コンテナ化とは
コンテナ化とは、データやプログラムを隔離できる仕組みを指します。
従来のアプリケーションの動かし方は、スマートフォンのアプリのように一つに機器に、Androidに対応したアプリをインストールして実行します。
コンテナ化は、一つ一つのプログラムを同じ環境で動作させるのではなく、細かい部屋に分けで実行します。
実行環境を隔離?いらなくない?
スマホのように使えばいいじゃんと思うかもしれません。しかし、サーバー側のシステムは皆さまのスマホよりも乱雑なので困ったことになります。
例えば、複数のプログラムから参照されるような便利なプログラムがあったとします。そのプログラムがバージョンアップしたとします。そうすると、そのバージョンアップに対応できるアプリとできないアプリが出てきてしまいます。そうしたときに、動くバージョン同士で独立した環境を作ることで解消されます。
つまり仮想化ってこと?
仮想化という言葉を知っている人であれば、似た概念であることに気づくでしょう。ただ、実務で仮想マシンとコンテナ化を同じ意味で使うことはお勧めいたしません。
仮想マシンと聞くと、VirtualBoxやVMwareなど仮想的に物理的なマシンを用意するものを指します。これは、物理的なものをソフトウェアで置き換える形です。例えるならば、自作PCを作る代わりにソフトウェアで実現していることに近いです。
一方で、コンテナ化は仮想マシンと同じく独立したOS環境を提供できますが、OSっぽいだけです。OSの機能のいくつかはコンテナを動かす基盤のホストに頼っています。OSは、OSの核となるカーネルという部分と、プラグラムから命令を受け取りカーネルで実行した結果をプログラムに伝える翻訳者的な動きをする部分に分かれています。コンテナを実行する際には、ホストのOSをカーネルに頼っています。
コンテナは持ち運びに便利
コンテナのメリットとして、持ち運びができる点があります。
コンテナは仮想マシンのように自作PCを作っていくという形ではなく、金型となるイメージを作り、その金型を使うことでいくつでもコンテナを生成できるようになっています。つまりは、コンテナの金型となるイメージを送れば、同じコンテナが作れます。
コンテナを実行するには、コンテナエンジンというソフトウェアが必要です。コンテナエンジンの上で、コンテナを実行できる構成を取ります。