はい、こんばんは。
Dockerについて少し勉強したので、アウトプットさせていただきます!!
Dockerとは?
Docker社が提供している、コンテナ型のアプリケーション実行環境のことです。コンテナ型の仮想化を利用して、環境構築をするといったイメージでしょうか。仮想化には、Vagrant+VirtualBoxのを用いて仮想化する方法と、Dockerを用いて仮想化する方法があります。
DockerはホストOSのカーネル(OSの核となる部分で、プログラムを実行する役割を担う)を利用してアプリケーションを実行します。
つまり、ホストOSを立ち上げると同時に、Dockerも立ち上がるため非常に動きが早いのが特徴です。以下にDockerを使うメリット、デメリットをまとめてみます。
メリット
・動きが早い(ホストOSのカーネルを使用しているため)
・必要な情報は全てDockerイメージにまとまっているため、環境が変わっても正常に動く
・チーム開発向き
メリットとしてはとにかく軽量で、使い勝手が良いのがDockerです。Dockerイメージに必要な情報を記載しておくと、全てのホストで同じ環境が再現できるので、どこで作業しても正常に動きます。また、ローカル、ステージング、本番でも同じ環境を作り出すことができるので、「私のパソコンでは正常に動いていたのに・・・おかしいな??」ということが無くなります。これは使わない手はないな!!と感じます。スクールでの開発で一番苦労したのは、自分のホストでは動くのだけど、本番にあげるとJavaScriptが動かない・・・・というものでした。これを解決してくれると無駄なところに時間をかけずにすみ、開発に専念できそうです。
デメリット
優秀なDcokerにもデメリットはあります。
・カーネルを共有できないOSでは使用できない
・分離レベルが低い(セキュリティ面で心配)
DockerはホストOSのカーネルの1プロセスとして起動してくれます。しかし、windowsとLinuxのように、カーネルを共有できないパソコンでは使用できません。Vagrant+VirtualBoxをもしいた開発では動きが重い分、任意のOSを仮想環境にインストールして使用するので、心配無用です。また、カーネルの1プロセスとして動作するため、セキュリティ面での心配があるようです。
Dockerを使う上でのメリット、デメリットを簡単にまとめてみました。
今後は実際に使ってみて、アウトプットしていきます!!
それでは!!
コメント