目次

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, --alldangling イメージだけでなく、未使用のイメージをすべて削除します
--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> のイメージ ID 0bf6577d7774 が表示されています。コンテナには使われていませんが、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日