【Docker基礎】コンテナはimageから作成する

 Docker でコンテナを作成する際にキーとなるのが、イメージ(image)と呼ばれる「コンテナのもと」になるファイルです。

 「イメージって何?」と聞かれたら、CD や DVD をファイル化した ISO ファイルをイメージするとわかりやすいでしょう。ISO ファイルを使えば、オリジナルの CD/DVD を簡単に再現できますよね。それと同じように、Docker イメージを使うと、コンテナを何度でも生成(再現)できます。

イメージとは何か

 イメージは、アプリケーションを動かすのに必要なファイルや設定をひとまとめにした、いわば「コンテナの設計図」です。
 Linux の OS や Apache、MySQL など、さまざまなイメージが用意されており、「何を動かしたいか」によって使うイメージが異なります。例えば Apache のコンテナを作りたいなら Apache 用のイメージ、MySQL のコンテナなら MySQL 用のイメージを利用します。

ポイント

  • ISO ファイルのように、イメージがあればいつでもコンテナを再現可能
  • 既存のイメージをカスタマイズして、自分専用のイメージを作ることも可能

コンテナを作る仕組み

 Docker ではイメージを基にしてコンテナを起動・作成します。以下に代表的なコマンドをまとめておきます。

コマンド説明実行例
docker pull <イメージ名>DockerHub などのリポジトリからイメージを ダウンロード(取得) する。ローカルにないイメージを初めて使うときに便利。docker pull httpd
(Apache httpd のイメージを取得)
docker imagesローカルに存在する Docker イメージの 一覧を表示 する。docker images
docker run <イメージ名>イメージから新しいコンテナを 作成・起動 する。
イメージがローカルになければ自動的に docker pull が実行される。
docker run -d -p 80:80 httpd
(Apache をバックグラウンドで起動)
docker ps現在起動中のコンテナを 一覧表示 する。
-a オプションを付けると停止中のコンテナも含めて表示。
docker ps -a
docker stop <コンテナID> / <コンテナ名>指定したコンテナを 停止 する。docker stop my-apache
docker rm <コンテナID> / <コンテナ名>停止中のコンテナを 削除 する。docker rm my-apache

ポイント

  • docker run は「イメージ取得 → コンテナ起動」を一度に行うコマンド
  • -d オプションでバックグラウンド起動
  • -p 80:80 でホスト側の 80 番ポートとコンテナ内の 80 番ポートをマッピング

コンテナは容量が許す限りいくつでも作れる

 Docker の最大の魅力のひとつが、複数のコンテナをまとめて動かせることです。サーバやパソコンのハードディスク容量・メモリが許す限り、いくつでもコンテナを同時起動可能です。

 例えば「Web サーバーは Apache、データベースは MySQL、別のアプリケーションは Node.js で」といった構成を、すべて独立したコンテナとして同じサーバ上で動かすことができます。

まとめ

 Docker ではコンテナを作る際に必ず イメージ が必要となります。イメージはいわば OS やソフトウェア一式をパッケージ化した ISO ファイルのようなもの。このイメージを元に、何度でも同じ環境を再現できるのが Docker の強みです。

 しかも、コンテナを複数同時に動かせるので、「Web サーバー + データベース + その他のアプリ」という構成も 1 台のマシン上で完結可能。ここで紹介した基本コマンドを使いながら、ぜひ Docker の世界を楽しんでください。