3
3

More than 3 years have passed since last update.

dockerってなんやねん!!

Posted at

dockerについて

dockerについてわかった基本的な事を書いていきます。
頭の中の整理のためでもある。

dockerってなんぞや

1、環境設定の手間を省ける。(dockerイメージ)
2、軽量で高速に起動、停止ができる。(dockerコンテナ)

解説

1、dockerイメージの解説
作成したDockerイメージを他の人に渡して使ってもらうことで、各自の環境のバージョンずれ防止や、開発環境準備の短縮化にもつながる。新規メンバ参画時のコスト削減や、環境依存問題を減らせる。

Dockerイメージとは、環境のスナップショットで,Imageを起動することで環境を再現できる。
つまり、Dockerがなければ、他の人に作業をしてもらう際に環境のバージョンを変える手間が生じるが、開発工程からDockerを活用していくことで短縮化することができる。

2、dockerコンテナの解説
dockerコンテナはVM(仮想マシン)と比べるとオーバーヘッド(無駄な処理)が少ない。(dockerのコンテナ技術とVMが比較されている。)

スクリーンショット 2020-05-02 13.13.07.png

よくみる図ですが、何を見たらいいのかよくわからんかった。そこで説明してみる。
左が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/

3
3
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
3
3