はじめに
先日超初心者にもわかるようにDockerの仕組みを説明してもらえる機会があったので、そこで教えてもらった内容を自分のアウトプット用としてまとめておきます。なお、超初心者用にかなり言葉を噛み砕いてとても簡単に説明してもらったものなので、Dockerの仕組みを熟知している人が見ると厳密には違う部分もあるかもしれませんが、「大雑把に言うとこんな感じだよね~」くらいで捉えてもらえると幸いです。
Dockerってなに?
A. 簡単に言うと、自分のパソコンの中にもうひとつパソコンを搭載できるサービスのこと
ちなみに、超初心者の私はDockerの仕組みを部屋とテントに例えて説明してもらうと理解しやすかったです。自分の部屋(=自分のパソコン)にテント(=もうひとつのパソコン)を張っているところを想像してみてください。このとき自分の部屋(=自分のパソコン)はテント(=もうひとつのパソコン)にスペースを貸している状態になります。このスペースを貸している状態のことを仮想化と言います。この仮想化こそがDockerの真骨頂のサービスです。
どうして仮想化を使ったほうがいいの?
A. 仮想化には以下のメリットがあります。
・ネット環境がなくてもサービスの開発ができる
・テント(=もうひとつのパソコン)は何回でもつくったり壊したりできる
・テント(=もうひとつのパソコン)は何個でもつくれるので開発しようとしている技術を比較しながら開発できる
このように、アプリケーションを効率的に開発することができるので、仮想化を利用することが勧められています。ちなみに、仮想化サービスはDocker以外にもいくつかあるみたいなので気になる人はぜひググってみてください。
Dockerではどんなサービスを提供しているの?
A. Dockerでは2つのサービスを提供しています。
- Docker Engine:もうひとつのパソコン(テント)をつくることが出来る技術のこと
- DockerHub:(他の)Dockerユーザーが作成したコンテナをアップロード・共有できるサービス
DockerユーザーはDockerHubから使いたいテント(もうひとつのパソコン)ををつくるための材料をダウンロードすることができます。この材料のことをイメージと言い、これを元にしてDockerユーザーはテント(もうひとつのパソコン)を自分のパソコンにつくることができます。
また、ダウンロードしたイメージは自分たちが使いやすいようにイメージをカスタマイズすることで使うことができます。そしてこのイメージをカスタマイズしたもの=テント(もうひとつのパソコン)であり、これをDocker用語でコンテナと言います。コンテナの中にはWebサーバーパッケージなどを含むライブラリ機能とアプリケーションを作ることが出来る機能が搭載されています。
なお、このイメージをカスタマイズしたコンテナはDockerHubにアップロード・共有することができ、それをまたほかのユーザーがダウンロードして使うこともできます。
おわりに
ここまでDockerの仕組みを簡単にまとめてきました。多分文字だけで理解するのは難しい部分も多くあると思います。私自身も実際に絵や図にまとめて理解した部分も多くあるので、もしこれで理解しにくいな~と思う部分があれば絵や図にまとめてみると少し理解しやすくなるかもしれません。