本記事の要約
- Dockerとは「データやプログラムをコンテナで隔離できる仕組み」
- コンテナはDocker Engineでimageという素材を使って作る
- Dockerを使えば、一つのマシンに複数のサーバを構築できる
- Dockerは、OSなどの物理的環境を無視できる
背景
Dockerを使ってLaravelの環境構築をしようとしています。
しかしDockerが何かさっぱり分からないまま環境構築をするのもスッキリしないので、基本的理解を作ることにしました。
参考にした書籍は『仕組みと使い方がわかる Docker&Kubernetesのきほんのきほん』です。
コメントや情報の訂正もお気軽にどうぞ!
Dockerとは
一言で言い表すと「データやプログラムを隔離できる仕組み」のことを指します。
そしてDockerは主にサーバで使用されます。
私たちがよく使うPC(クライアント)ではWordやExcelといったソフトウェアが動いていると思いますが、
サーバでも同じくMySQLやApacheといったソフトウェアが動いています。
Dockerを使えばこれらサーバで使うソフトウェアを、ほぼOSごと一台のPC上で隔離することが可能となります。
隔離は「コンテナ」という単位で行われます。
コンテナとは?
ここでいうコンテナに関しては、イ〇バの物置のような倉庫をイメージしてみてください。
「100人乗っても大丈夫」でおなじみのイ〇バの倉庫(コンテナ)に、MySQLやApacheといったサーバを閉じ込めて使えるということです。
そしてこのコンテナは1台のPCのDockerの容量範囲内で複数作ることができ、MySQLやApacheを複数インストールすることもできます。
※普通は1台のPC上には1つのサーバ(MySQLなど)しか構築できません
なぜ隔離する?
それでは、なぜコンテナを使ってプログラムやデータを隔離する必要があるのでしょうか?
というのも、初心者ながら自分がこう思ったからです。
「何で隔離すんの?メリットは?」と。
その答えは、「隔離すればお互いのソフトウェアを独立して動かせるようになるから」です。
具体例
例えばあるソフトウェア(WordPress)がMySQLを使っていたとします。
そして別のソフトウェア(Laravel)もMySQLを使っていたとします。
そしてWordPressはVer1.0のMySQLに対応しています。
しかしLaravelがVer2.0以降のMySQLじゃないと動かないとなった時、
従来のMySQL(サーバ)は一台のPCに一つしか構築できないため、困るわけです。
しかしDockerを使えば一台のPC上に複数の、そして異なるバージョンのMySQLを構築できます。
その意味で、1台のPC上でデータやプログラムを隔離できることには大きなメリットが存在するのです。
コンテナは持ち運び可能
また、コンテナは違うPC間での「持ち運び」が可能です。
そして、Dockerが入ってさえいれば、異なるOSのPCであっても環境構築が容易です。
既にチューニングした環境をあらかじめDockerのコンテナ内に用意しておき、そのコンテナを配布すれば、
一斉に環境構築を済ませることもできます。