Docker

イメージとコンテナ

設計図と実行中の環境を区別し、Dockerの動きを言葉で説明できるようにします。

Docker入門の講座一覧

01

イメージは設計図

イメージは、コンテナを作るためのファイルシステムと起動設定をまとめたものです。たとえばnginx:alpineには、Nginxを動かすための実行ファイルや設定が含まれています。イメージ自体を編集して動かすのではなく、イメージをもとにコンテナを作ります。

取得済みイメージを一覧表示COMMAND
docker image ls
出力例OUTPUT
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
nginx        alpine    2bc...         2 weeks ago   48MB
hello-world  latest    1b4...         2 months ago  10kB

イメージIDやサイズは変わります。REPOSITORYとTAGを合わせたnginx:alpineのような名前で、どのイメージを使うか指定します。

02

コンテナは実行単位

コンテナはイメージから作られたプロセスの実行単位です。同じイメージから複数のコンテナを作れます。コンテナには名前、ID、状態、公開ポート、接続するネットワークなどがあり、停止してもすぐにイメージが消えるわけではありません。

イメージとコンテナの関係

「イメージをダウンロードする」「コンテナを起動する」「コンテナを停止する」「不要なコンテナを削除する」は別の操作です。コンテナを削除しても元のイメージは残るため、同じイメージから再作成できます。

Nginxをバックグラウンドで起動COMMAND
docker run -d --name web -p 8080:80 nginx:alpine
docker ps
実行結果の例OUTPUT
CONTAINER ID   IMAGE         COMMAND                  STATUS         PORTS                  NAMES
ab12...        nginx:alpine  "/docker-entrypoint..."  Up 5 seconds   0.0.0.0:8080->80/tcp   web

ブラウザでhttp://localhost:8080を開くと、Nginxの初期画面が表示されます。-dはバックグラウンド起動、--nameは名前、-pはホストとコンテナのポートを接続する指定です。

03

タグとレジストリ

nginx:alpineのnginxはイメージ名、alpineはタグです。タグを省略すると通常はlatestが使われますが、latestが常に特定のバージョンを意味するとは限りません。チームや本番環境では、用途に合ったタグやダイジェストを確認して固定することが重要です。

イメージを明示して取得COMMAND
docker pull nginx:alpine

レジストリはイメージを保管する場所です。Docker Hubの公開イメージを利用するときも、公式イメージか、メンテナンス状況やタグの説明が確認できる提供元かを調べてから使います。

04

状態を観察する

起動中のコンテナだけを表示するdocker psと、停止済みも含めて表示するdocker ps -aを使い分けます。コンテナの詳細設定はdocker inspect webで確認できます。

停止と削除COMMAND
docker stop web
docker ps -a
docker rm web

停止するとコンテナは残り、docker rmで削除します。ブラウザの表示が不要になったら、学習用コンテナを片付ける習慣をつけましょう。次は基本コマンドでライフサイクルを詳しく扱います。