docker rm と docker rmi、どっちがどっち?
Dockerを学び始めると、docker rm と docker rmi という2つのコマンドに出会います。名前が非常に似ているため、「どっちがコンテナ削除で、どっちがイメージ削除だっけ?」と混乱する方は多いのではないでしょうか。
この記事では、両コマンドの違いを比較表や実行例を交えてわかりやすく解説します。よくある間違いパターンも紹介しますので、もう迷うことはなくなるはずです。
結論:rm はコンテナ削除、rmi はイメージ削除
まず結論からお伝えします。
docker rm→ コンテナを削除するコマンドdocker rmi→ イメージを削除するコマンド
rmi の「i」は image(イメージ)の頭文字です。「rm + i(image)= イメージを削除」と覚えておけば間違えません。
💡 覚え方
rm = Remove(削除)→ コンテナを削除
rmi = Remove Image → イメージを削除
「i」が付いたらイメージ、と覚えましょう。
そもそもイメージとコンテナの違いがあいまいな方は、先にイメージとコンテナの違いの記事を読んでおくと理解がスムーズです。
docker rm と docker rmi の比較表
| 項目 | docker rm | docker rmi |
|---|---|---|
| 削除対象 | コンテナ | イメージ |
| 確認コマンド | docker ps -a |
docker images |
| 起動中・使用中の場合 | エラー(-f で強制削除可) |
コンテナが使用中だとエラー(-f で強制削除可) |
| 一括削除コマンド | docker container prune |
docker image prune |
このように、対になる構造になっています。確認コマンドと一括削除コマンドもセットで覚えておくと便利です。
docker rm の使い方と実行例
docker rm は停止済みのコンテナを削除するコマンドです。コンテナのライフサイクルを理解しておくと、なぜ「停止してから削除」が基本なのかがわかります。
基本構文
docker rm コンテナ名またはコンテナID
実行例:停止済みコンテナを削除する
# コンテナの一覧を確認
docker ps -a
# 出力例
CONTAINER ID IMAGE COMMAND STATUS NAMES
a1b2c3d4e5f6 nginx "nginx ..." Exited (0) 5 minutes ago my-nginx
f6e5d4c3b2a1 ubuntu "bash" Exited (0) 10 minutes ago my-ubuntu
# コンテナを削除
docker rm my-nginx
# 複数のコンテナを同時に削除
docker rm my-nginx my-ubuntu
起動中のコンテナを削除する場合
起動中のコンテナに対して docker rm を実行するとエラーになります。
# 起動中のコンテナを削除しようとするとエラー
docker rm my-running-container
# Error response from daemon: You cannot remove a running container ...
# -f オプションで強制削除(停止 + 削除を同時に行う)
docker rm -f my-running-container
⚠️ 注意
-f(force)オプションはコンテナを強制停止してから削除します。データが失われる可能性があるため、本番環境では慎重に使いましょう。
docker rmi の使い方と実行例
docker rmi はイメージを削除するコマンドです。
基本構文
docker rmi イメージ名またはイメージID
実行例:イメージを削除する
# イメージの一覧を確認
docker images
# 出力例
REPOSITORY TAG IMAGE ID SIZE
nginx latest a1b2c3d4e5f6 187MB
ubuntu 22.04 f6e5d4c3b2a1 77.8MB
# イメージを削除
docker rmi nginx:latest
# イメージIDで削除(先頭数文字でもOK)
docker rmi a1b2c3
コンテナが残っているとエラーになる
そのイメージから作成されたコンテナが存在する場合(停止済みでも)、削除できません。
# コンテナが残っている状態でイメージを削除しようとするとエラー
docker rmi nginx:latest
# Error response from daemon: conflict: unable to remove repository reference ...
# (must force) - container xxxx is using its referenced image
# 先にコンテナを削除してからイメージを削除する
docker rm my-nginx
docker rmi nginx:latest
# または -f で強制削除
docker rmi -f nginx:latest
💡 補足
イメージを削除できないときは、まず docker ps -a でそのイメージを使っているコンテナが残っていないか確認しましょう。詳しくはイメージ削除できないときの対処法も参考にしてください。
よくある間違いパターン
間違い1:イメージを消したいのに docker rm を使ってしまう
イメージを削除したいのに docker rm を使ってしまうケースです。
# やりたいこと:nginxイメージを削除したい
# 間違い:docker rm はコンテナ用のコマンド
docker rm nginx:latest
# Error: No such container: nginx:latest
# 正しくは docker rmi を使う
docker rmi nginx:latest
docker rm はコンテナ名やコンテナIDを受け取るため、イメージ名を渡しても「そんなコンテナは存在しない」とエラーになります。
間違い2:コンテナが残っているのにイメージを削除しようとする
コンテナが残った状態で docker rmi を実行してエラーになるパターンです。
# コンテナが残っている
docker ps -a
# CONTAINER ID IMAGE ... NAMES
# a1b2c3d4e5f6 nginx ... my-nginx
# この状態でイメージを削除しようとするとエラー
docker rmi nginx:latest
# Error: conflict: unable to remove repository reference ...
# 正しい手順:コンテナを先に削除してからイメージを削除
docker rm my-nginx
docker rmi nginx:latest
✅ ポイント
削除の順序は「コンテナ → イメージ」です。イメージはコンテナの元になるテンプレートなので、コンテナが残っている限り削除できません。
関連する削除コマンドまとめ
Docker にはさまざまな削除コマンドがあります。以下の表で整理しておきましょう。Docker主要コマンド一覧も合わせて確認すると全体像がつかめます。
| コマンド | 削除対象 | 説明 |
|---|---|---|
docker rm |
コンテナ | 指定したコンテナを削除 |
docker rmi |
イメージ | 指定したイメージを削除 |
docker container prune |
停止済みコンテナ | 停止済みのコンテナをすべて一括削除 |
docker image prune |
danglingイメージ | タグなしの未使用イメージを削除 |
docker image prune -a |
未使用イメージ全般 | コンテナに使われていない全イメージを削除 |
docker system prune |
複数リソース | 停止コンテナ・未使用ネットワーク・danglingイメージ等をまとめて削除 |
⚠️ 注意
docker system prune はコンテナ・イメージ・ネットワークなど複数のリソースをまとめて削除する強力なコマンドです。-a オプションを付けると未使用イメージもすべて削除されるため、実行前に必ず確認しましょう。
まとめ
この記事では docker rm と docker rmi の違いを解説しました。
docker rm→ コンテナを削除(rm = Remove)docker rmi→ イメージを削除(rmi = Remove Image)- 「i」が付いたら Image と覚える
- 削除の順序は「コンテナ → イメージ」
- 一括削除には
docker container prune/docker image pruneを使う
名前が似ている2つのコマンドですが、それぞれの役割を正しく理解しておけば、不要なリソースを安全にクリーンアップできます。



コメント