aws

【A-23】Docker image

Dockerのイメージは、コンテナを作成するためのテンプレートです。この章では、Dockerイメージの基本的な概念と、適切に利用するための方法を学びます。


[ 学習フェーズ ]

docker rundocker 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();