古い未使用の Docker イメージを削除する

Isaac Tony 2023年6月20日
  1. 古い未使用の Docker イメージを削除する
  2. 単一の Docker イメージを削除する
  3. ダングリング Docker イメージを削除する
古い未使用の Docker イメージを削除する

Docker は、コンテナーと呼ばれる標準化された単位でアプリケーションをラップすることにより、依存関係を気にすることなく、開発者がアプリケーションを簡単に構築、テスト、展開できるようにします。 ここ数年、Docker の効率性などのメリットにより、Docker が広く採用されてきました。

Docker イメージは、Docker コンテナーの基本的なビルディング ブロックであり、通常、アプリケーションの実行に必要なコード、システム ツール、ライブラリ、およびその他の依存関係で構成されます。

Docker を使用してイメージを作成する一般的な方法は、Docker レジストリから取得したベース イメージに基づいてイメージを作成することです。

古い未使用の Docker イメージを削除する

時間の経過とともに作成されたイメージ、ボリューム、コンテナーは簡単に追跡できなくなります。 Docker は、正当な理由もなく Docker のストレージ プールを消費する可能性がある、ぶら下がっている、または未使用のイメージとコンテナーを廃止することを推奨しています。

ダングリング Docker イメージのほとんどは、完全に忘れていたシステム内の名前のない古いイメージで構成されています。 一方、未使用のイメージは、どの Docker コンテナーでも使用されていないイメージです。

Docker で使用されていないイメージを削除するには、いくつかの方法を使用できます。 ただし、画像を削除する前に、それらを一覧表示できる必要があります。

docker images コマンドを使用して、システム内のすべてのイメージを一覧表示できます。

コード:

$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
new-image    latest    149077dac3e6   2 hours ago   932MB
<none>       <none>    22fa358b711d   2 weeks ago   929MB
myapp        latest    ee771b73a9ec   4 weeks ago   929MB
rabbitmq     latest    d4455d35bc06   8 weeks ago   221MB

または、以下に示すように、docker image コマンドを ls コマンドと一緒に使用して、システム内のイメージを一覧表示することもできます。

$ docker image ls
new-image    latest    149077dac3e6   2 hours ago   932MB
<none>       <none>    22fa358b711d   2 weeks ago   929MB
myapp        latest    ee771b73a9ec   4 weeks ago   929MB
rabbitmq     latest    d4455d35bc06   8 weeks ago   221MB

Docker イメージを一覧表示すると、それらを削除するために使用できる Docker 名とイメージ ID にアクセスできます。

単一の Docker イメージを削除する

Docker では、実行中のコンテナでも停止中のコンテナでも使用されていないイメージのみを削除できます。 コンテナーで使用されているイメージを削除しようとすると、必ずエラーが発生します。

docker rmi コマンドは、イメージの名前またはイメージ ID を使用して単一の Docker イメージを削除します。

$docker rmi 149077dac3e6
Error response from daemon: conflict: unable to delete 149077dac3e6 (must be forced) - image is being used by stopped container 841d1e8d8c25

これは、Docker コンテナーを削除するまで、このイメージを削除できないことを意味します。 docker rm <container_id> コマンドを使用して、このコンテナーを削除できます。

それが完了すると、画像は未使用になり、以下に示すように削除できます。

コード:

$ docker rmi 149077dac3e6

出力:

Untagged: new-image:latest
Deleted: sha256:149077dac3e6f61c31ca98da741afd5d36147b69cacd945e3d53bd763ec7b420

docker rmi コマンドの横に名前または ID をリストするだけで、複数の未使用のイメージを削除することもできます。

$ docker rmi ubuntu rabbitmq

出力:

Untagged: ubuntu:latest
Untagged: ubuntu@sha256:bea6d19168bbfd6af8d77c2cc3c572114eb5d113e6f422573c93cb605a0e2ffb
Deleted: sha256:ff0fea8310f3957d9b1e6ba494f3e4b63cb348c76160c6c15578e65995ffaa87
Deleted: sha256:867d0767a47c392f80acb51572851923d6d3e55289828b0cd84a96ba342660c7
Untagged: rabbitmq:latest
Untagged: rabbitmq@sha256:3d4c70ec5fc84c27efaeb56c50aafcac4fd8583b61398cc028e4876f84ae73d8
Deleted: sha256:d4455d35bc062a1c1847c2e83b8fae2f40a83075aad536f8bf82166c71431ad2
Deleted: sha256:84693641bf34ab0dee198b5b04c94c4c295626a4d29aacdeb8d17eaf200502ac
Deleted: sha256:8f76417ffbedd6e87b802960c31571aa49d14b058505475712e6ce8ee676718c
Deleted: sha256:a2fd31c374592ebd2e920f312aab1b27e592989a8af371c430fb8f915365bfb0
Deleted: sha256:b1d41dbdcd3cfe9eff61d43ecba57adf40bd26853fe2c7ab203f6f3bfbbe2761
Deleted: sha256:3560f714926f60121a89674e17510e4044f70be3229953fbbd82cb4eea6b1153
Deleted: sha256:4cd230fe05650d13ec67f7edde60fad03ab6cea3db52df798680294632ff62d3
Deleted: sha256:e535128bae717fe882e77c5283b08840efbf73e07eb65b1ef11df14ed4ea911f
Deleted: sha256:15d050b0b911cf148f48c6fb9ca3d654af4855504aee7791c7f7fce1c9fe1b21
Deleted: sha256:36ffdceb4c77bf34325fb695e64ea447f688797f2f1e3af224c29593310578d2

ダングリング Docker イメージを削除する

ダングリング イメージは、タグ付けされたどのイメージとも関係のないイメージです。 これらのイメージは使用されていないため、システムで何の役にも立たないため、削除する必要があります。

-f フラグを使用してダングリング イメージを一覧表示し、以下の docker images コマンドと一緒に dangling=true を設定できます。

コード:

$ docker images -f dangling=true

出力:

REPOSITORY   TAG       IMAGE ID       CREATED       SIZE
<none>       <none>    22fa358b711d   2 weeks ago   929MB

これらのイメージを削除するには、docker prune コマンドを使用します。 このコマンドがすべてのダングリング イメージを削除することを求めるメッセージが表示されます。

これらの画像を削除したい場合は、y をクリックして [はい] をクリックします。

$ docker image prune

出力:

WARNING! This will remove all dangling images.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B

最後に、未使用のイメージを含め、システム内のすべてのイメージを削除することもできます。 ただし、このオプションは注意して使用する必要があり、システム内のすべてのイメージを確実に削除したい場合にのみ使用してください。

システム内の未使用のイメージを含むすべてのイメージを削除するには、最初に docker images コマンドと -q および -a タグを使用してそれらを一覧表示する必要があります。 次に、このコマンドを以下の docker rmi コマンドの下にネストします。

コード:

$ docker rmi $(docker images -q -a)
Untagged: ubuntu:latest
Untagged: ubuntu@sha256:bea6d19168bbfd6af8d77c2cc3c572114eb5d113e6f422573c93cb605a0e2ffb
Deleted: sha256:ff0fea8310f3957d9b1e6ba494f3e4b63cb348c76160c6c15578e65995ffaa87
Deleted: sha256:867d0767a47c392f80acb51572851923d6d3e55289828b0cd84a96ba342660c7
Deleted: sha256:22fa358b711d2ea3a1d72e59f062f6c7c38b414bdb253fb8d0def20222cadd93
著者: Isaac Tony
Isaac Tony avatar Isaac Tony avatar

Isaac Tony is a professional software developer and technical writer fascinated by Tech and productivity. He helps large technical organizations communicate their message clearly through writing.

LinkedIn

関連記事 - Docker Image