このページで解説している内容は、以下の YouTube 動画の解説で見ることができます。
【Docker基礎】イメージのバージョンとイメージ名

イメージのバージョンとイメージ名
ここでは、Dockerイメージのバージョン管理とイメージ名の指定方法について学びます。これまでの解説では、練習のしやすさを優先してイメージのバージョンを指定せずに「latest(最新版)」を使用してきました。しかし、システムの安定性や特定の機能の利用を目的として、特定のバージョンのイメージを使用したい場合も多々あります。ここでは、イメージ名とバージョン番号の指定方法を詳しく解説し、固定バージョンを使用する際のメリットと注意点について理解を深めましょう。

イメージのバージョン管理の重要性
最新版 vs 固定バージョン
- 最新版(latest): 常に最新の機能やセキュリティアップデートが適用されていますが、予期せぬ変更や互換性の問題が発生する可能性があります。
- 固定バージョン: 特定のバージョンを指定することで、システムの安定性を確保し、互換性の問題を避けることができます。
バージョン管理のメリット
- 安定性の確保: 環境を一貫して維持できるため、開発や本番環境での動作が安定します。
- 互換性の維持: 特定のバージョンに依存するアプリケーションや設定を使用する際に、互換性の問題を防ぎます。
- セキュリティの管理: 必要に応じてセキュリティパッチを適用し、適切なタイミングでバージョンを更新できます。
イメージ名とバージョン番号の指定方法
Dockerでは、イメージ名にバージョン番号を付けて特定のバージョンを指定することが可能です。バージョン番号を指定することで、特定のリリースや機能セットを持つイメージを利用できます。
バージョン番号の指定書式
イメージ名:バージョン番号
例えば、Apacheのバージョン「2.2」を指定してコンテナを作成する場合、以下のように記述します。
docker run --name ApacheServer -d -p 8080:80 httpd:2.2
バージョン指定の例
ソフトウェア | バージョン番号 | イメージ名指定例 |
---|---|---|
Apache | 2.2 | httpd:2.2 |
nginx | 1.18 | nginx:1.18 |
MySQL | 8.0 | mysql:8.0 |
Ubuntu | 20.04 | ubuntu:20.04 |
Python | 3.9 | python:3.9 |
注意点
- バージョン番号を指定しない場合、デフォルトで「latest」が使用されます。
- 特定のバージョンを使用することで、環境の一貫性と安定性を保つことができます。
イメージ名とバージョン番号の活用方法
Step1:「run」コマンドでバージョン指定のイメージを実行する
特定のバージョンを指定してイメージを実行することで、希望するバージョンのソフトウェアをコンテナ内で利用できます。以下では、Apacheのバージョン「2.2」を指定してコンテナを作成・起動する手順を紹介します。
コマンドの実行
PowerShellまたはターミナルに以下のコマンドを入力します。
docker run --name ApacheServer -d -p 8080:80 httpd:2.2
コマンドの解説
オプション | 説明 |
---|---|
docker run | 新しいコンテナを作成して起動します。 |
--name ApacheServer | コンテナに「ApacheServer」という名前を付けます。 |
-d | コンテナをバックグラウンド(デタッチドモード)で実行します。 |
-p 8080:80 | ホストのポート8080をコンテナのポート80にマッピングします。 |
httpd:2.2 | 使用するイメージ名とバージョン番号を指定します(Apacheのバージョン2.2)。 |
実行結果
PS C:\Users\joeac> docker run --name ApacheServer -d -p 8080:80 httpd:2.2
Unable to find image 'httpd:2.2' locally
2.2: Pulling from library/httpd
f49cf87b52c1: Pull complete
24b1e09cbcb7: Pull complete
8a4e0d64e915: Pull complete
bcbe0eb4ca51: Pull complete
16e370c15d38: Pull complete
Digest: sha256:9784d70c8ea466fabd52b0bc8cde84980324f9612380d22fbad2151df9a430eb
Status: Downloaded newer image for httpd:2.2
e690e0bd5e9977dbd201db613415ed90ff2c9c7a44f03279f59a8f42eb1163d5
注意点
Unable to find image 'httpd:2.2' locally
: 指定したバージョンのイメージがローカルに存在しないため、Docker Hubからダウンロードが開始されます。- コンテナID(例:
a14fcfc45d85...
)は環境によって異なります。
Step2:「ps」コマンドでコンテナの稼働を確認する
作成・起動した「ApacheServer」コンテナが正しく稼働しているか確認します。
コマンドの実行
docker ps
実行結果
PS C:\Users\joeac> docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e690e0bd5e99 httpd:2.2 "httpd-foreground" 3 minutes ago Up 3 minutes 0.0.0.0:8080->80/tcp ApacheServer
確認ポイント
NAMES
列に「ApacheServer」と表示されていること。STATUS
が「Up」であること。PORTS
に0.0.0.0:8080->80/tcp
と表示され、ホストのポート8080がコンテナのポート80にマッピングされていること。
Step3:ブラウザでApacheServerコンテナにアクセスする
ブラウザを開き、以下のURLにアクセスして、指定したバージョンのApacheが正常に動作していることを確認します。
http://localhost:8080/
注意点
- プロトコルは
http
を使用します(https
ではありません)。 - 正常に動作していれば、Apacheのバージョン2.2のデフォルトページが表示されます。
図: Apache 2.2の初期画面

Step4:「stop」コマンドでコンテナを停止する
作成・起動した「ApacheServer」コンテナの動作を停止します。
コマンドの実行
docker stop ApacheServer
実行結果の例
PS C:\Users\joeac> docker stop ApacheServer
ApacheServer
解説
docker stop
コマンドにより、指定したコンテナ名「ApacheServer」のコンテナが停止されます。- 実行結果として、停止されたコンテナ名が表示されます。
Step5:「rm」コマンドでコンテナを削除する
不要になった「ApacheServer」コンテナを削除します。
コマンドの実行
docker rm ApacheServer
実行結果の例
PS C:\Users\joeac> docker rm ApacheServer
ApacheServer
解説
docker rm
コマンドにより、指定したコンテナ名「ApacheServer」のコンテナが削除されます。- 実行結果として、削除されたコンテナ名が表示されます。
注意点
- コンテナを削除する前に、必ずコンテナが停止されていることを確認してください。稼働中のコンテナは削除できません。
- コンテナを削除すると、そのコンテナ内のデータは失われます。必要なデータがある場合は、事前にバックアップを取ってください。
Step6:「ps -a」コマンドでコンテナの削除を確認する
コンテナが正しく削除されたか確認します。
コマンドの実行
docker ps -a
実行結果
PS C:\Users\joeac> docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
確認ポイント
- 「ApacheServer」が一覧に表示されていないこと。
- 他のコンテナが、存在する場合でも、「ApacheServer」が削除されていることを確認します。
補足: イメージ削除時の依存関係
イメージを削除する際、他のイメージやコンテナがそのイメージに依存している場合は削除できません。特に、親イメージや中間イメージが存在する場合は注意が必要です。依存関係を確認し、必要に応じて関連するコンテナやイメージを削除してから進めましょう。
未使用イメージの一括削除
未使用のイメージを一括で削除するには、以下のコマンドを使用します。関連するコンテナが存在している場合は削除できないので注意してください。
docker image prune -a
コマンドの実行
PS C:\Users\joeac> docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: httpd:2.2
untagged: httpd@sha256:9784d70c8ea466fabd52b0bc8cde84980324f9612380d22fbad2151df9a430eb
(省略)
untagged: httpd:latest
untagged: httpd@sha256:72f6e24600718dddef131de7cb5b31496b05c5af41e9db8707df371859a350bb
(省略)
untagged: mysql:latest
untagged: mysql@sha256:0255b469f0135a0236d672d60e3154ae2f4538b146744966d96440318cc822c6
(省略)
untagged: hello-world:latest
untagged: hello-world@sha256:5b3cc85e16e3058003c13b7821318369dad01dac3dbb877aac3c28182255c724
(省略)
untagged: nginx:latest
untagged: nginx@sha256:42e917aaa1b5bb40dd0f6f7f4f857490ac7747d7ef73b391c774a41a8b994f15
(省略)
Total reclaimed space: 1.039GB
注意点
docker image prune
コマンドは、未使用のイメージのみを削除します。必要なイメージが削除されないように注意してください。- 確認プロンプトが表示されるため、削除前に内容を確認できます。
まとめ
ここでは、Dockerイメージのバージョン管理とイメージ名の指定方法について学びました。以下のポイントを押さえておきましょう。
- イメージのバージョン指定: イメージ名にバージョン番号を付けて指定することで、特定のバージョンのソフトウェアをコンテナ内で利用できます。これにより、環境の一貫性とシステムの安定性を確保できます。
- コマンドの理解:
docker run
コマンドにおけるイメージ名とバージョン番号の指定方法を理解し、必要に応じて固定バージョンを使用することが重要です。 - イメージの管理:
docker image ls
、docker rm
、docker image prune
などのコマンドを活用して、不要なイメージを適切に管理し、システムのストレージを効率的に利用します。 - 依存関係の確認: イメージを削除する前に、そのイメージから作成されたすべてのコンテナが削除されていることを確認し、依存関係に注意を払います。
イメージのバージョン管理は、Docker環境を効率的かつ安全に運用するための基本的なスキルです。これらの手順を実践し、イメージ管理の習熟度を高めましょう。
次のコンテンツでは、実際にイメージを削除する演習を行います。さまざまなイメージを作成・管理した後は、不要になったイメージを適切に削除することで、システムの健全性を維持しましょう。引き続き、Dockerの学習を進めていきましょう。