【Docker基礎】イメージの削除

 ここでは、Dockerのコンテナ操作の流れの一環として、Dockerイメージの削除方法について学びます。これまでにコンテナを作成・起動・停止・削除する手順を学びましたが、コンテナを削除しても、それに基づくイメージはシステムに残ったままです。イメージが蓄積されると、ストレージを圧迫し、システムのパフォーマンスに影響を及ぼす可能性があるため、不要なイメージは適宜削除することが推奨されます。

イメージが残る理由

 Dockerでは、イメージはコンテナのテンプレートとして機能します。コンテナを削除しても、元となるイメージは削除されないため、再度同じイメージからコンテナを作成することが可能です。この仕組みにより、イメージを再利用することで効率的にコンテナを管理できます。しかし、コンテナを多数作成・削除する際には、不要なイメージが溜まってしまう問題が発生します。

イメージを削除する重要性

 イメージが増え続けると、ディスクスペースを圧迫するだけでなく、システムの管理が煩雑になる可能性があります。そのため、使用しなくなったイメージは定期的に削除し、システムの健全性を維持することが重要です。

イメージの削除方法

 Dockerイメージを削除するには、docker image rmコマンドを使用します。このコマンドは、イメージ名またはイメージIDを指定して実行します。ただし、イメージを削除する前に、そのイメージから作成されたすべてのコンテナが削除されている必要があります。コンテナが存在する場合、イメージの削除は拒否されます。

イメージ削除の前提条件

  • 削除対象のイメージから作成されたすべてのコンテナが停止・削除されていること。
  • 他のイメージやコンテナが依存していないこと。

使用するコマンドの概要

以下に、本章で使用する主なDockerコマンドとその説明をまとめます。

コマンド説明
docker image ls現在のイメージ一覧を表示する。
docker image rm指定したイメージを削除する。
docker ps -aすべてのコンテナ(稼働中および停止中)を表示する。
docker stop指定したコンテナを停止する。
docker rm指定したコンテナを削除する。

各コマンドの詳細

1.docker image ls

 現在ローカルに存在するDockerイメージの一覧を表示します。このコマンドを使用して、削除したいイメージの名前やIDを確認します。

オプション説明
なしデフォルトでイメージの一覧を表示する

実行例

docker image ls

実行結果の例

REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
nginx         latest    f876bfc1cc63   5 weeks ago     192MB
mysql         latest    56a8c14e1404   2 months ago    603MB
httpd         latest    4ce47c750a58   5 months ago    147MB
hello-world   latest    d2c94e258dcb   20 months ago   13.3kB

実行結果の意味

項目内容
REPOSITORYイメージ名
TAGバージョン情報。指定しない場合は「latest(最新版)」が使用される。
IMAGE IDイメージID。先頭12文字のみで十分に識別可能
CREATEDイメージが作成されてからの経過時間
SIZEイメージのファイルサイズ

2.docker image rm

 指定したイメージを削除します。イメージ名またはイメージIDを指定することで削除が可能です。複数のイメージを同時に削除することもできます。

オプション説明
イメージ名 または イメージID削除対象のイメージを指定する。スペース区切りで複数指定可能。

実行例

docker image rm nginx mysql

実行結果の例

Untagged: nginx:latest
Untagged: mysql:latest
Deleted: f876bfc1cc63a1234567890abcdef1234567890abcdef1234567890abcdef1234
Deleted: 56a8c14e1404a1234567890abcdef1234567890abcdef1234567890abcdef1234

注意点

  • イメージが使用中の場合: 削除しようとしたイメージを基に作成されたコンテナが存在する場合、イメージの削除は拒否されます。その場合は、まず関連するコンテナを停止・削除する必要があります。
  • 複数イメージの削除: スペース区切りで複数のイメージを指定することで、一度に複数のイメージを削除できます。

3.docker ps -a

 すべてのコンテナ(稼働中および停止中)を表示します。このコマンドを使用して、削除対象のイメージから作成されたコンテナが存在しないか確認します。

オプション説明
-aすべてのコンテナを表示する

実行例

docker ps -a

実行結果の例

CONTAINER ID   IMAGE         COMMAND                  CREATED          STATUS                      PORTS     NAMES
a1b2c3d4e5f6   hello-world   "/hello"                 46 hours ago     Exited (0) 2 hours ago               frosty_sinoussi

確認ポイント

  • 削除対象のイメージから作成されたコンテナが一覧に存在しないこと。

4.docker stop

 指定したコンテナを停止します。イメージを削除する前に、関連するコンテナを停止する必要があります。

オプション説明
コンテナ名停止対象のコンテナを指定する

実行例

docker stop MysqlServer

実行結果の例

MysqlServer

解説

  • docker stopコマンドは、指定したコンテナの動作を停止します。実行結果として、停止されたコンテナ名が表示されます。

5.docker rm

 指定したコンテナを削除します。イメージを削除する前に、関連するコンテナを削除する必要があります。

オプション説明
コンテナ名削除対象のコンテナを指定する

実行例

docker rm MysqlServer

実行結果の例

MysqlServer

解説

  • docker rmコマンドは、指定したコンテナを削除します。実行結果として、削除されたコンテナ名が表示されます。

注意点

  • コンテナを削除する前に、必ずコンテナが停止されていることを確認してください。稼働中のコンテナは削除できません。
  • コンテナを削除すると、そのコンテナ内のデータは失われます。必要なデータがある場合は、事前にバックアップを取ってください。

イメージ削除の手順

以下の手順に従って、不要なDockerイメージを削除します。

Step1: 削除対象のイメージを確認する

まず、削除したいイメージが存在するか確認します。

docker image ls

実行結果の例

REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
nginx         latest    f876bfc1cc63   5 weeks ago     192MB
mysql         latest    56a8c14e1404   2 months ago    603MB
httpd         latest    4ce47c750a58   5 months ago    147MB
hello-world   latest    d2c94e258dcb   20 months ago   13.3kB

Step2: 関連するコンテナを停止・削除する

 削除対象のイメージから作成されたコンテナが存在する場合、まずそれらのコンテナを停止・削除します。

docker stop コンテナ名
docker rm コンテナ名

実行例

docker stop MysqlServer
docker rm MysqlServer

Step3: イメージを削除する

 コンテナが削除されたら、イメージを削除します。イメージ名またはイメージIDを使用して削除します。

イメージ名で削除する場合

docker image rm mysql

メージIDで削除する場合

docker image rm 56a8c14e1404

複数のイメージを一度に削除する場合

docker image rm nginx httpd

実行結果の例

Untagged: nginx:latest
Untagged: mysql:latest
Deleted: f876bfc1cc63a1234567890abcdef1234567890abcdef1234567890abcdef1234
Deleted: 56a8c14e1404a1234567890abcdef1234567890abcdef1234567890abcdef1234

Step4: イメージの削除を確認する

削除が完了したことを確認するため、再度イメージ一覧を表示します。

docker image ls

実行結果の例

REPOSITORY    TAG       IMAGE ID       CREATED         SIZE
httpd         latest    4ce47c750a58   5 months ago    147MB
hello-world   latest    d2c94e258dcb   20 months ago   13.3kB

確認ポイント

  • 削除したイメージ(例: nginx, mysql)が一覧に表示されていないこと。

補足

イメージ削除時の依存関係

 イメージを削除する際、他のイメージやコンテナが依存している場合は削除できません。特に、親イメージや中間イメージが存在する場合は注意が必要です。依存関係を確認し、必要に応じて関連するコンテナやイメージを削除してから進めましょう。

未使用イメージの一括削除

未使用のイメージ(Dangling Images)を一括で削除するには、以下のコマンドを使用します。

ocker image prune

実行例

PS C:\Users\joeac> docker image prune
WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: <none>:<none>
deleted: sha256:abcdef1234567890...

Total reclaimed space: 50MB

注意点

  • docker image pruneコマンドは、未使用のイメージのみを削除します。必要なイメージが削除されないように注意してください。

まとめ

 ここでは、Dockerイメージの削除方法について学びました。以下のポイントを押さえておきましょう。

  • イメージの管理: コンテナを削除してもイメージは残るため、不要なイメージは適宜削除してストレージを効率的に利用します。
  • 依存関係の確認: イメージを削除する前に、そのイメージから作成されたすべてのコンテナを停止・削除する必要があります。
  • コマンドの理解: docker image lsdocker image rmdocker ps -aなどのコマンドを活用して、イメージとコンテナの状態を管理します。
  • 未使用イメージの一括削除: docker image pruneコマンドを使用して、未使用のイメージを一括で削除することができます。

 イメージの削除は、Docker環境の健全性を維持し、システムリソースを有効に活用するために重要な操作です。これらの手順を実践し、Dockerイメージの管理スキルを向上させましょう。