今さら聞けないことをできるだけ分かりやすく書く試みです。
※本稿に記載した内容は個人の感想なので、間違っていても怒らないでください。
前回までのあらすじ
コンテナって何?
https://qiita.com/yuki7/items/7e454f9cebb2088a0e9b
前回はコンテナというものが何かという基本的なことに触れた。
今回は具体的にコンテナにどのようなメリットがあるのか。
コンテナを使うことで開発者・運用者はどのようなメリットが出るのか。
という点について調べてみたい。
1.コンテナのメリット
コンテナの分かりやすいメリットは
・同じ環境をたくさん用意することができる
・同じ環境を素早く用意することができる
の2点が大きい。
1.1.同じ環境をたくさん用意することができる
アプリケーションを開発する際、
・開発環境
・ステージング環境
・本番環境
というような環境でアプリケーションを開発していくことになる。
ここでよくある問題として、環境ごとにOSやMWの設定が異なり、
動作に違いが生まれるという点だ。
通常のハイパーバイザー型の環境であれば、
それぞれOSが用意されている形となるため、
独自の設定が存在したり、導入時期による環境の違いが生まれてくることになる。
とくに「開発環境」というのは開発者の「PC内」「専用端末内」であることが多く、
環境の違いが起きやすいものとなる。
これが、コンテナの場合となると、
前回の記事でも記載したようにOSは同一の、複数の環境を用意することができる。
1.ハードウェア > 2.ホストOS > 3.仮想マシン > 4.OS/カーネル > 5.コンテナ > 6.アプリケーション
> 5.コンテナ > 6.アプリケーション
> 5.コンテナ > 6.アプリケーション
> 5.コンテナ > 6.アプリケーション
:
:
こういう環境を用意することにより、アプリケーション開発をスムーズに行わせることができるというのが、コンテナのメリットの1つと言える。
1.2.同じ環境を素早く用意することができる
もう1つのコンテナのメリットとしていえるのが、
その展開の速さ、可搬性、という点と言える。
先述したようにコンテナ環境はOSは1つであるので、
新しく環境を用意する際にコンテナを追加するだけで良い。
コンテナ以前であれば、OSを導入し、MWを導入し、という作業が必要だったが、
コンテナの場合それらをすっ飛ばして環境を用意できるため、
素早く環境を用意できるという点もメリットとなる。
また、コンテナはサイズが小さいというのも1つのメリットである。
具体的には開発環境を配布する際にそのメリットが活きてくる。
開発は開発者のPCなどで行われることもあるが、
例えば通常の仮想マシンでは小さくても数GBの容量がる。
この容量のものを配布するとなると事だが、
コンテナ環境は容量が数百MBであるということで、
環境の配布という意味でもメリットがある。
まとめ
今回はボリュームが少なかったが、コンテナのメリットについて調べてみた。
いくつかのサイトで勉強してみた限り、コンテナのメリットとしては
・同じ環境をたくさん用意することができる
・同じ環境を素早く用意することができる
という2つが大きいといえる。
もちろん他にもあるだろうし、デメリットもある。
次回はデメリットについてまとめていきたい。
参考文献
https://www.ashisuto.co.jp/tech-note/article/20171206_system.html#:~:text=%E3%81%93%E3%82%8C%E3%81%BE%E3%81%A7%E3%81%AE%E3%80%8C%E3%83%8F%E3%82%A4%E3%83%91%E3%83%BC%E3%83%90%E3%82%A4%E3%82%B6%E3%83%BC,%E5%89%8A%E6%B8%9B%E3%80%81%E4%BD%9C%E6%A5%AD%E8%B2%A0%E8%8D%B7%E3%81%AE%E8%BB%BD%E6%B8%9B%E3%80%82&text=%E9%9A%9C%E5%AE%B3%E6%99%82%E3%81%AB%E3%81%8A%E3%81%91%E3%82%8B%E4%BB%A3%E6%9B%BF%E7%92%B0%E5%A2%83,%E3%81%8A%E3%82%88%E3%81%B3%E4%BD%9C%E6%A5%AD%E8%B2%A0%E8%8D%B7%E3%81%AE%E8%BB%BD%E6%B8%9B%E3%80%82
https://news.mynavi.jp/article/zerocontena-5/