dockerについて
dockerについてわかった基本的な事を書いていきます。
頭の中の整理のためでもある。
dockerってなんぞや
1、環境設定の手間を省ける。(dockerイメージ)
2、軽量で高速に起動、停止ができる。(dockerコンテナ)
解説
1、dockerイメージの解説
作成したDockerイメージを他の人に渡して使ってもらうことで、各自の環境のバージョンずれ防止や、開発環境準備の短縮化にもつながる。新規メンバ参画時のコスト削減や、環境依存問題を減らせる。
Dockerイメージとは、環境のスナップショットで,Imageを起動することで環境を再現できる。
つまり、Dockerがなければ、他の人に作業をしてもらう際に環境のバージョンを変える手間が生じるが、開発工程からDockerを活用していくことで短縮化することができる。
2、dockerコンテナの解説
dockerコンテナはVM(仮想マシン)と比べるとオーバーヘッド(無駄な処理)が少ない。(dockerのコンテナ技術とVMが比較されている。)
よくみる図ですが、何を見たらいいのかよくわからんかった。そこで説明してみる。
左がVMで右がコンテナ、
コンテナが軽量というのは、両者比較して青丸分が少ないことを図的に認識してもらい、
具体的に異なるのは赤丸の部分で、VMはOSをいくつも立ち上げるので処理自体が重くなってしまう。
そもそも仮想化技術とは
VMもコンテナも仮想化技術の一種である。
例え話をしましょう。Windows用アプリケーションであるWordやExcelなどのOfficeソフトは、Macではライセンスを取得しないかぎり使用できません。では、WindowsOSそのものがMacのハードウェア上で動くようにしたらどうでしょう?アプリケーションはOSと連動して動いているので、WindowsOSがMacで動くとすれば、WordやExcelを使用することができます。ユーザがあたかも複数のパソコンを保持しているかのようです。
このようなことがサーバにも起こります。通常、パソコンと同様に1つのサーバにつき1つのOSが対応しています。サーバ仮想化の技術では、1台の物理サーバ上で複数の仮想マシンを論理的に構築することによって、複数のサーバOSを作動できるような仕組みになっています。したがって、ユーザは1つのサーバ上で複数のサーバOSを使用できる、ということ。
物理的サーバを減らすことが可能になるため、コスト削減に繋がる。
VM(仮想マシン) vs コンテナ
○一台のVMで複数のアプリケーションがOSのリソースを共有して動作している場合において問題点
・セキュリティの問題(OSのリソースの共有による)
・特定のアプリのリソースの占有
○仮想化技術を使ってアプリケーション毎に仮想マシンを用意した時の問題点
・OSやアンチウィルスなどのライセンスコストUP
○コンテナによりアプリレベルでアイソレーションが可能になった場合
・仮想マシン毎にOSを用意する必要がないため、オーバーヘッドが少ない。
・セキュリティがやや問題(OS共有のため複数アプリに影響を及ぼす可能性がある。)
筆者感想
いろいろ調べてすぐに理解できなかったため、まとめようかと思ったが、あまりわかりやすいものが書けなかった。つまりまだ理解できてないということ、、
理解が深まり次第修正を加えていきたいと思う。
参考
https://knowledge.sakura.ad.jp/13265/
https://y-ohgi.com/introduction-docker/