イメージは設計図
イメージは、コンテナを作るためのファイルシステムと起動設定をまとめたものです。たとえばnginx:alpineには、Nginxを動かすための実行ファイルや設定が含まれています。イメージ自体を編集して動かすのではなく、イメージをもとにコンテナを作ります。
docker image lsREPOSITORY 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のような名前で、どのイメージを使うか指定します。
コンテナは実行単位
コンテナはイメージから作られたプロセスの実行単位です。同じイメージから複数のコンテナを作れます。コンテナには名前、ID、状態、公開ポート、接続するネットワークなどがあり、停止してもすぐにイメージが消えるわけではありません。
「イメージをダウンロードする」「コンテナを起動する」「コンテナを停止する」「不要なコンテナを削除する」は別の操作です。コンテナを削除しても元のイメージは残るため、同じイメージから再作成できます。
docker run -d --name web -p 8080:80 nginx:alpine
docker psCONTAINER 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はホストとコンテナのポートを接続する指定です。
タグとレジストリ
nginx:alpineのnginxはイメージ名、alpineはタグです。タグを省略すると通常はlatestが使われますが、latestが常に特定のバージョンを意味するとは限りません。チームや本番環境では、用途に合ったタグやダイジェストを確認して固定することが重要です。
docker pull nginx:alpineレジストリはイメージを保管する場所です。Docker Hubの公開イメージを利用するときも、公式イメージか、メンテナンス状況やタグの説明が確認できる提供元かを調べてから使います。
状態を観察する
起動中のコンテナだけを表示するdocker psと、停止済みも含めて表示するdocker ps -aを使い分けます。コンテナの詳細設定はdocker inspect webで確認できます。
docker stop web
docker ps -a
docker rm web停止するとコンテナは残り、docker rmで削除します。ブラウザの表示が不要になったら、学習用コンテナを片付ける習慣をつけましょう。次は基本コマンドでライフサイクルを詳しく扱います。