Dockerとは?
Dockerを一言で表せば、「データやプログラムを隔離できる」仕組みのことを言います。パソコンとサーバーは複数のプログラムが動いています。例えば、パソコンではExcelやWordなどのソフトウェアがあり、サーバーにはApachやMySQLといったソフトウェアが存在します。これらのプログラムをそれぞれの環境に隔離することができます。また、これらのデータやプログラムなどを隔離したものをコンテナと呼びます。
通常、コンテナはそのコンテナの中にあるデータだけを利用できますが、別のコンテナの中にあるデータや、Dockerホストのデータを利用することはできません。コンテナはファイルやディレクトリを隔離するだけではなく、プロセスやネットワークなども隔離してくれます。隔離性を高めることには、Dockerホストなど周辺環境への依存度を低下させるなど、様々な利点があります。
Dockerの仕組み
Dockerを使うにはいくつかの制限があります。それは、WindowsでもMacでもDockerを使うことが可能ですが、Linuxが必要になることです。これはDockerはLinux OSを使うことを前提に開発されているため、別途Linux環境が必要になります。
また、Dockerを使うにもまずは、Docker Engineをインストールしなければなりません。このエンジンはコンテナの作成や移動を実現してくれます。
コンテナとイメージ
コンテナの作成する時には、コンテナの素となるイメージを作成します。イメージを素にエンジン上に複数のコンテナを配置することが可能です。また、逆も然りでコンテナからイメージを作成することができます。このメリットは、もし複数のコンテナを作ってそのコンテナ分改造を加えたい場合は、すべてのコンテナに対して手を加える必要があります。しかし、コンテナからイメージを作成できることによって、コンテナから新しいイメージを作成した後に、そのイメージを元に改造した複数のコンテナを複製できるため、大量のサーバーを作る作業が格段に楽になります。
イメージは一から作ることもできますが、よく使われるイメージはDocker Hubにすでに作成されたイメージを配布しているため、そこから利用するのが一般的です。またコンテナは、自分でカスタムすることもできます。
Dockerのライフサイクル
Dockerのコンテナは長く使うのではなく、作っては捨てるという使い方が一般的です。
作成 => 起動 => 停止 => 破棄 (ライフサイクル)
1つのコンテナそのまま使い続けるのではなく、どんどんアップデートされたソフトウェアを入れていき、新しいバージョンのコンテナに乗り換えていきます。前述した通り、一つずつコンテナを改良していくのではなく、新たなイメージを作成した後にアップデートしたコンテナを複数作成していきます。
データの保存
前述通り、コンテナはライフサイクルがあり、作っては捨てるのが原則であると説明しました。では、捨てたコンテナのデータはどうなるのでしょうか?当然コンテナを破棄すると中身のデータは消えてしまいます。そこで、データを削除しないように、大概はDockerをインストールしている物理的なマシーンのディスク(HDDやSSD)にデータを書き込むことが一般的です。このデータをディスクに書き込むことを、「マウント」と呼びます。
Dockerの始め方
上述した通り、Dockerを使うには、Linux OSとDocker Engineの2つの環境が必要です。WindowsやMacを使っている人がDockerを使うには、2つの方法があります。
まず一つはデスクトップ版のDockerを使う方法です。これは、Docker EngineとLinux OSがパッケージになっているものをWindows版とMac用に提供しているサービスのことで、このソフトを入れることによってDockerの環境を簡単に構築できます。
2つ目は独自のPCに仮想環境を構築した後に、Docker EngineとLinux OSをそれぞれインストールして環境構築する方法になります。仮想環境には、Virtual BoxやVMwareといったソフトウェアなどがあります。
参考
Docker & Kubernetesのきほんのきほん マイナビ出版