Dockerのイメージは、コンテナを作成するためのテンプレートです。この章では、Dockerイメージの基本的な概念と、適切に利用するための方法を学びます。
[ 学習フェーズ ]
docker run
と docker pull
の違い、必要性
docker run
docker run
コマンドを実行すると、指定されたイメージが ローカルに存在しない場合、自動的にdocker pull
してからコンテナを起動 します。- 例:
docker run ubuntu:latest
これは、ubuntu:latest
のイメージがローカルにない場合、Docker Hub からダウンロードした後、コンテナを起動します。
docker pull
docker pull
コマンドは、イメージのダウンロードのみを行い、コンテナは起動しません。- 例:
docker pull ubuntu:latest
こちらを実行した時点では、イメージはローカルにあるが、まだコンテナは実行されていないはずです。
どちらを使うべきか?
状況 | 推奨コマンド |
---|---|
初めてイメージをダウンロードしてすぐ実行したい | docker run |
事前に最新のイメージを取得しておきたい(ネットワーク負荷軽減) | docker pull |
latest
バージョンの変化と固定の必要性
latest
タグの危険性
latest
は 特定のバージョンを指すものではなく、その時点での最新版をさします。- 時間が経つと
latest
の内容が変わり、動作が変わったり、エラーが発生するリスクがあります。
特定のバージョンを固定する方法
- 推奨されるのは バージョン番号を明示する ことです。
- 例:
docker pull ubuntu:22.04
これにより、Ubuntu 22.04 のバージョンを 明示的に取得 できます。 latest
を使う場合のリスク:shコピーする編集するdocker pull ubuntu:latest
これを実行すると、現在のlatest
(例: Ubuntu 22.04)を取得できるが、次回実行時に 24.04 などに変わる可能性があります。
バージョン管理の重要性
- CI/CDパイプライン や 本番環境 では、
latest
を使わず、安定したバージョンを指定する べきです。
提供バージョンの探し方
方法1: Docker Hub を検索
Docker Hub(https://hub.docker.com)でイメージの公式ページを確認すると、提供されているバージョン一覧を確認できます。
方法2: docker search
コマンド
ローカルからも Docker Hub のイメージを検索できます。
docker search ubuntu
結果(例):
NAME DESCRIPTION STARS
ubuntu Official Ubuntu base image 13000
ubuntu/nginx Ubuntu with Nginx 500
ubuntu/php Ubuntu with PHP 400
公式イメージは official
のタグが付いていますね。
方法3: docker manifest
を利用
特定のイメージのバージョン詳細を確認するには docker manifest
を使用しましょう。
docker manifest inspect ubuntu
これにより、アーキテクチャごとのバージョン情報が取得できます。
[ 実践フェーズ ]
異なるバージョンのMySQLを2つ起動してましょう。
以下を参考に、MySQLの異なるバージョンのコンテナを指定して起動してください。
https://hub.docker.com/_/mysql/tags
※ポートの衝突に注意し、3307や3308ポートで起動するようにしましょう。
コンテナの起動が確認できたら、バージョンを確認 MySQL にログイン後、以下のコマンドを実行して確認します。
SELECT VERSION();