docker rm と docker rmi の違いをわかりやすく解説【コンテナ削除 vs イメージ削除】

コラム

docker rm と docker rmi、どっちがどっち?

Dockerを学び始めると、docker rmdocker 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 rmdocker rmi の違いを解説しました。

  • docker rmコンテナを削除(rm = Remove)
  • docker rmiイメージを削除(rmi = Remove Image)
  • 「i」が付いたら Image と覚える
  • 削除の順序は「コンテナ → イメージ」
  • 一括削除には docker container prune / docker image prune を使う

名前が似ている2つのコマンドですが、それぞれの役割を正しく理解しておけば、不要なリソースを安全にクリーンアップできます。

Dockerの基礎を動画で体系的に学びませんか?

実務で使う基礎だけを3時間に凝縮。環境構築から丁寧に解説しています。

Udemy Docker入門講座 クーポン割引で講座を見る →

コメント

タイトルとURLをコピーしました