目次
docker rmi コマンド入門:イメージとタグの削除(-f、image prune)
docker rmi(別名 docker image rm)はイメージのタグ、または未使用のイメージを削除します。イメージがコンテナに使われている場合、通常は conflict が発生します。イメージとディスク容量の整理方法については、ディスク容量の整理を参照してください。
構文
docker rmi [オプション] イメージ [イメージ...]
docker image rm [オプション] イメージ [イメージ...]
オプション
| オプション | 説明 |
|---|---|
-f, --force | イメージを強制的に削除します |
--no-prune | タグのない親イメージを削除しません |
--platform 文字列 | linux/amd64 など、指定したプラットフォームのバージョンのみを削除します |
docker image prune のオプション:
| オプション | 説明 |
|---|---|
-a, --all | dangling イメージだけでなく、未使用のイメージをすべて削除します |
--filter 条件 | until=<timestamp> などのフィルター条件を指定します |
-f, --force | 確認を求めません |
例
以下の例では、alpine、demo/app、redis、registry の各イメージを使います。一部のタグは同じイメージ ID を指しています。
タグの削除と conflict の発生
$ docker images
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
alpine:3.23 ff7f0c727dd7 26.6MB 8.21MB
alpine@sha256:85fe1e81d6758c208f3e1eed4338a1997e19d4be002d4dd32d3100c9a8c010a0 85fe1e81d675 13MB 3.94MB
demo/app:1.0 ff7f0c727dd7 26.6MB 8.21MB
demo/app:2.0 ff7f0c727dd7 26.6MB 8.21MB
localhost:5000/tools/alpine:3.23 ff7f0c727dd7 26.6MB 8.21MB
localhost:5000/tools/alpine:latest ff7f0c727dd7 26.6MB 8.21MB
redis:8-alpine 0bf6577d7774 161MB 39.6MB U
registry:3 01cd312e6702 86.9MB 20.7MB U
$ docker rmi demo/app:1.0
Untagged: demo/app:1.0
$ docker rmi redis:8-alpine
Error response from daemon: conflict: unable to delete redis:8-alpine (must be forced) - container 0663b06bc225 is using its referenced image 0bf6577d7774
demo/app:1.0を削除するとUntaggedが返されます。同じイメージ ID にほかのタグが付いているためです。redis:8-alpineはコンテナに使われているため、直接削除すると conflict が返され、エラーにコンテナ ID とイメージ ID が示されます。EXTRA列のUは、そのイメージが使用中であることを示します。
-f でタグを強制削除
$ docker rmi -f redis:8-alpine
Untagged: redis:8-alpine
$ docker ps -a --filter name=uses-redis
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0663b06bc225 0bf6577d7774 "docker-entrypoint.s…" 3 seconds ago Up 3 seconds 6379/tcp uses-redis
$ docker rmi nosuch:image
Error response from daemon: No such image: nosuch:image
-fによってredis:8-alpineタグが削除されました。続いて表示されるコンテナは実行中のままで、タグを強制削除してもコンテナは停止しないことがわかります。- 存在しないイメージ名を削除しようとすると、
No such imageが返されます。 - 強制削除後、イメージが
<none>タグでローカルに残ることがあります。詳細な使用状況はdocker system df -vで確認できます。
dangling イメージと未使用イメージをすべて削除
$ docker image prune -f
Total reclaimed space: 0B
$ docker image prune -a -f
Deleted Images:
untagged: alpine:3.23
untagged: alpine@sha256:85fe1e81d6758c208f3e1eed4338a1997e19d4be002d4dd32d3100c9a8c010a0
deleted: sha256:85fe1e81d6758c208f3e1eed4338a1997e19d4be002d4dd32d3100c9a8c010a0
deleted: sha256:1f3591b8a02ea153f41c5bba878ad477f63ab3d19349762cb77504db02a23e15
deleted: sha256:c3709935ef4cf35769588b317a43fa75b70a7ee51af2d449069ba66e956a0f44
untagged: localhost:5000/tools/alpine:3.23
untagged: localhost:5000/tools/alpine:latest
untagged: demo/app:2.0
deleted: sha256:ff7f0c727dd796aa36787bfcd9a64bf35a6ce72a73451b3359fde849b6703d63
deleted: sha256:3d67941fed5ae436b2bb9791cb3f50a252441c7706bbc5b4e738936df8ff8306
deleted: sha256:74a5b9d36e2dbe5329330986093322eb7619d9d5ebbc916392cf686d0e7381ce
deleted: sha256:8793abc479381bafd16c9d538b01c5a8dd7eef6aa10a737f2ad828ac73cb80e9
deleted: sha256:6d423cc7d2471ec6b5d77eaa820bc0808c1213c56c6fb88ccab237a486ecab64
Total reclaimed space: 26.7MB
$ docker images
IMAGE ID DISK USAGE CONTENT SIZE EXTRA
registry:3 01cd312e6702 86.9MB 20.7MB U
-aを付けないimage pruneは dangling イメージだけを削除します。この実測では削除対象がなかったため、回収容量は0Bでした。-aを付けると、タグが残っているものも含め、コンテナに使われていないイメージをすべて削除します。使用中のregistry:3は残ります。- Docker 29 では dangling イメージが以前より残りにくくなったため、通常の
image pruneでは容量が回収されないことがよくあります。未使用イメージをすべて削除するには-aを使います。
<none> イメージを確認し、system prune で整理
$ docker system df -v | head -20
Images space usage:
REPOSITORY TAG IMAGE ID CREATED SIZE SHARED SIZE UNIQUE SIZE CONTAINERS
myweb snapshot 56e3f92534ca 7 seconds ago 92.1MB 0B 92.08MB 0
nginx 1.30-alpine 47928bf67eb6 3 days ago 93.5MB 12.94MB 80.6MB 1
registry 3 01cd312e6702 3 days ago 86.9MB 12.94MB 73.93MB 1
<none> <none> 0bf6577d7774 3 days ago 161MB 12.93MB 147.6MB 0
alpine 3.23 ff7f0c727dd7 3 days ago 13MB 12.93MB 86.86kB 1
Containers space usage:
CONTAINER ID IMAGE COMMAND LOCAL VOLUMES SIZE CREATED STATUS NAMES
0c009f73010b alpine:3.23 "sleep 600" 0 4.1kB 42 seconds ago Up 41 seconds small
63b9a2f9c63f nginx:1.30-alpine "/docker-entrypoint.…" 0 115kB 44 seconds ago Up 43 seconds web
35357aad74b1 registry:3 "/entrypoint.sh /etc…" 1 20.5kB 2 minutes ago Up 2 minutes registry
Local Volumes space usage:
VOLUME NAME LINKS SIZE
21ea99090ddead0461eb5a6efd670e1d9cf58fe9c23d5f8618db5868fb6170aa 1 3.854MB
$ docker system prune -f
Deleted Images:
untagged: sha256:0bf6577d7774e592b29d093e3ac9390eb91e13d72c21e506afce736de5e0eeb0
deleted: sha256:0bf6577d7774e592b29d093e3ac9390eb91e13d72c21e506afce736de5e0eeb0
deleted: sha256:16b124a2d3eacd620d917ead6fd26cbf1f1d7117fa94122398971931cfe2d403
deleted: sha256:f79a7876c6644b273e4eec899344e51c66959237a2f71188db8cb98d7311521c
Total reclaimed space: 147.6MB
$ docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 4 3 272.6MB 92.08MB (33%)
Containers 3 3 139.3kB 0B (0%)
Local Volumes 1 1 3.854MB 0B (0%)
Build Cache 0 0 0B 0B
docker system df -vには、<none>:<none>のイメージ ID0bf6577d7774が表示されています。コンテナには使われていませんが、161MBを占め、そのうち147.6MBが固有の容量です。docker system prune -fはこのイメージと関連データを削除し、147.6MBを回収します。その後、Images の使用量は420.2MBから272.6MBに減りました。system pruneは、ほかの未使用 Docker データも整理します。イメージだけを整理する場合はdocker image pruneを使います。
関連する章
練習問題
練習:まず redis:8-alpine の削除を試し、次に -f でそのタグを削除して、そのイメージを使っている uses-redis コンテナが実行中のままであることを確認してください。
解答
docker rmi redis:8-alpine
docker rmi -f redis:8-alpine
docker ps -a --filter name=uses-redis
よくある質問
docker rmi と docker image rm は別のコマンドですか?
いいえ。docker rmi、docker image rm、docker image remove は同じコマンドの別名です。
実行中のコンテナが使っているイメージを直接削除できますか?
通常の削除では conflict が返され、そのイメージを使っているコンテナが示されます。-f を付けるとイメージのタグを削除できます。実測ではコンテナは実行されたままでした。
docker image prune と docker image prune -a の違いは何ですか?
-a を付けない場合は dangling イメージのみを削除します。-a を付けるとコンテナに使われていないすべてのイメージを削除します。Docker 29 での実測では、通常の prune で回収された容量は 0B でしたが、-a では未使用イメージが削除されました。
-f でコンテナが使っているイメージを削除した後、そのイメージの容量も回収できますか?
docker system df -v では、そのイメージが <none> タグで残っていることを確認できます。実測では docker system prune -f により削除され、147.6MB が回収されました。
更新日 2026年10月26日