Webアプリケーションを作成する際によく用いられるDocker。私はDockerってあのクジラのマークのやつっていう認識はありましたが、なぜDockerがよく用いられているのかはイマイチ理解していませんでした。
ソフトウェアエンジニアを目指していく上で、使用技術のトレンドに乗り遅れるわけにはいかない!そう思ったのでDockerを勉強しました。今回はそのアウトプットをかねて、これからDockerについて知ろうとする方のために、学習した内容をまとめようと思います。
キーワード:Docker
Dockerとは?
Dockerとは、OS上にコンテナと呼ばれるものを作成し、それぞれ独立した環境を構築できるものです。
独立した環境を構築できるため、環境AではRuby3.3.2を使い、環境BではRuby2.7.8を使う、のようなことが行やすくなります。普段アプリケーション開発を行う上でアプリごとに開発環境のバージョンが異なると、環境構築をしなくてはいけなかったためDockerを使えば開発効率が上がりそうと思いました。
Dockerの概要をここまで確認してきて、これって仮想マシンっていうやつと同じではないか?と疑問に思った方がいるはずです。次の章では仮想マシンとDocker(仮想コンテナ)の違いについて見ていきます。
Dockerと仮想マシンの違いについて
ここでは仮想マシンとの違いについて確認していきます。まず仮想マシンについて復習しましょう。
仮想マシンとは、ソフトウェアを使用して一つの物理コンピュータ上に複数のコンピュータを動作させるものです。
それぞれの仮想コンピュータ(仮想マシン)は異なる種類のOSを動かすことができます。例えば、元のコンピュータのOSはWindowsであるが仮想マシンのOSはLinuxを動作させている、といったことが可能です。つまり、Dockerと同様に独立した環境を構築することが可能です。
Dockerと仮想マシンはどちらも独立した環境を構築することが可能ですが、その違いは仮想化する対象にあります。
仮想マシンはOSを仮想化するのに対し、Dockerはコンテナを仮想化します。
仮想マシンはハイパーバイザーと呼ばれる、複数の仮想マシンを管理するソフトウェアの上にOSを配置して、あたかも別のコンピュータが動作しているように振舞ってくれます。
ハイパーバイザーはこの複数の仮想マシンが必要とするリソースを適切に物理マシンに割り振ってあげます。
一方、Dockerはコンテナエンジンと呼ばれる、コンテナイメージに基づいてコンテナを作成するソフトウェアの上にコンテナが作られます。このコンテナエンジンは一つのOS(物理マシンのOS)上にあるため、コンテナたちは一つのOS上に存在することになります。
仮想マシンはそのマシンごとに独自のOSが搭載されているため、動作が重いというデメリットがあります。しかし、Dockerは一つのOSに対して複数のコンテナがあるだけなので、軽量で軽いというメリットがあります。
これらを知ると、なぜ多くの企業が開発する際にDockerを用いるようになったのか理解できるようになってきました。
まとめ
今回は、多くの企業で開発に用いられているDockerの概要について解説していきました。
Dockerとは、一つの物理マシン上にコンテナと呼ばれる独立した環境を構築する技術のことです。仮想マシンと一見似ていますが、仮想化する仕組みが違ったことを理解しておきましょう。
とりあえず、この記事を読んでDockerが何者なのか理解していただけたら嬉しいです。もし、間違いがありましたら気兼ねなく問い合わせフォームから指摘してくださると幸いです。
それでは、次の記事で〜
コメント