InfraAcademy

InfraAcademy Blog

【docker rmの使い方】コンテナの削除方法を解説【Docker入門⑦】

| #Docker #Docker入門講座 #docker入門
Linuxをブラウザで試してみる

Linux・ネットワーク・AWSを、環境構築なしで実践学習できます

こんにちは、フルスタックエンジニアのryuです。

今回の記事では、Dockerコンテナを削除する docker rm コマンドの使い方を解説します。

Dockerを触っていると、

「停止したコンテナがどんどん増えてきた」 「docker rm を実行したらエラーになった」 「コンテナと一緒にデータまで消えるのか分からない」

ということがあります。

コンテナを1つ削除するだけなら、

docker rm コンテナ名

で実行できます。

ただし、起動中のコンテナはそのままでは削除できません。また、-f-vdocker container prune など、使い方を間違えると意図しない停止やデータ削除につながるオプションもあります。

この記事では、Docker初心者向けに、コンテナの確認、停止、削除、複数削除、一括削除、ボリュームとの違いまで順番に解説します。

Dockerコンテナを削除するには docker rm

Dockerコンテナを削除するときは、docker rm を使用します。

正式なコマンド名では、

docker container rm

です。

docker rm はその短い別名として利用できます。

例えば、nginx という名前のコンテナを削除する場合は、

docker rm nginx

と実行します。

コンテナIDを指定しても構いません。

docker rm 6c34486e6d32

docker rm

削除が成功すると、削除したコンテナ名やIDが表示されます。

まず削除するコンテナを確認しよう

コンテナ名やIDが分からない場合は、まず一覧を確認します。

起動中のコンテナだけなら、

docker ps

です。

停止済みを含めて全て確認したい場合は、

docker ps -a

を実行します。

docker ps

docker ps -a の結果には、

CONTAINER ID
IMAGE
COMMAND
STATUS
PORTS
NAMES

などが表示されます。

削除するときは CONTAINER ID または NAMES の値を指定します。

起動中のコンテナはそのまま削除できない

docker rm を実行したとき、

Error response from daemon:
You cannot remove a running container ...

のようなエラーが出ることがあります。

docker rmでエラーが発生

これは、削除対象のコンテナがまだ動いているためです。

基本的には、

コンテナを停止
↓
コンテナを削除

の順番で操作します。

docker stop で停止してから削除する

まずコンテナを停止します。

docker stop nginx

コンテナIDでも構いません。

docker stop 6c34486e6d32

dockerコンテナを停止

停止後に、

docker rm nginx

を実行します。

まとめると、

docker stop nginx
docker rm nginx

です。

Docker初心者のうちは、このように停止と削除を分けて実行した方が、今何をしているのか分かりやすいと思います。

docker rm -f で起動中のコンテナを強制削除する

起動中のコンテナを強制的に削除したい場合は、

docker rm -f nginx

とします。

-f--force の短縮形です。

ただし、現在のDocker公式ドキュメントでは、起動中のコンテナを --force で削除すると、コンテナのメインプロセスへSIGKILLが送られます。

つまり、

正常な終了処理
↓
停止

ではなく、強制的に終了させる操作です。

アプリケーションによっては、終了時に必要な処理を実行できない可能性があります。

特別な理由がなければ、

docker stop コンテナ名
docker rm コンテナ名

と停止してから削除する方が分かりやすいでしょう。

複数のコンテナをまとめて削除する

docker rm には複数のコンテナを指定できます。

例えば、

docker rm web api db

とすると、webapidb の3つをまとめて削除できます。

コンテナIDを複数並べることもできます。

docker rm abc123 def456 ghi789

毎回1つずつ docker rm を実行する必要はありません。

停止済みコンテナを一括削除するなら docker container prune

開発環境では、停止済みのコンテナが大量に残ることがあります。

その場合は、

docker container prune

を利用できます。

実行すると、

WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N]

のような確認が表示されます。

ここで実行すると、停止しているコンテナがまとめて削除されます。

「このコンテナだけ残したい」という場合は、何も考えずに実行しないよう注意してください。

確認なしで実行する -f オプションもありますが、

docker container prune -f

は削除対象をよく確認してから使いましょう。

古い停止コンテナだけ削除する

docker container prune ではフィルターも利用できます。

例えば、24時間より前に作成された停止コンテナを対象にする場合は、

docker container prune --filter "until=24h"

のように指定できます。

開発環境を掃除したいものの、直近で作った停止コンテナは残したい場合に便利です。

docker rm -v はボリューム削除に注意

コンテナを削除しても、データを保存するボリュームが必ず一緒に消えるわけではありません。

docker rm には、

docker rm -v nginx

という -v / --volumes オプションがあります。

これは、コンテナに関連付けられた匿名ボリュームをコンテナと一緒に削除するために使います。

一方、名前付きボリュームは、docker rm -v を実行しても基本的に残ります。

例えば、

名前付きボリューム
my-data:/var/lib/mysql

のようなデータは、コンテナのライフサイクルとは分けて管理できます。

DockerでDBを扱うときは、

コンテナを削除することDBデータを削除すること

を同じだと思わないようにしてください。

コンテナ・イメージ・ボリュームは別物

Docker初心者のうちは、この3つを混同しやすいです。

種類 役割 主な削除コマンド
コンテナ 実行環境 docker rm
イメージ コンテナの元になるテンプレート docker image rm / docker rmi
ボリューム 永続データ docker volume rm

例えば、

docker rm nginx

を実行しても、元になった nginx イメージまで削除されるわけではありません。

イメージを削除するなら、

docker image rm nginx

です。

「何を消そうとしているのか」を理解してからコマンドを実行することが大切です。

Docker Composeで作ったコンテナなら docker compose down

Docker Composeで複数のコンテナを管理している場合は、1つずつ docker rm するより、

docker compose down

を使う方が分かりやすいケースがあります。

例えば、

services:
  web:
    ...
  db:
    ...

というCompose環境なら、

docker compose down

でComposeが作成したコンテナやネットワークなどをまとめて停止・削除できます。

ただし、ボリュームまで削除するオプションを付ける場合は、保存データへの影響を理解してから実行してください。

ディスク容量を空けたいなら prune の範囲に注意

Dockerではコンテナ以外にも、

  • 使用していないイメージ
  • ネットワーク
  • ビルドキャッシュ
  • ボリューム

などがディスク容量を使います。

docker system prune を使うと複数種類の未使用リソースをまとめて整理できますが、削除範囲が広くなります。

「コンテナだけ削除したい」なら、

docker container prune

の方が意図が明確です。

最初から docker system prune を使うのではなく、どのDockerリソースが不要なのかを確認して削除するのがおすすめです。

docker rm のよく使うコマンドまとめ

やりたいこと コマンド
コンテナを1つ削除 docker rm nginx
停止してから削除 docker stop nginxdocker rm nginx
起動中コンテナを強制削除 docker rm -f nginx
複数削除 docker rm web api db
停止済みを一括削除 docker container prune
匿名ボリュームも削除 docker rm -v nginx
コンテナ一覧を確認 docker ps -a

この表だけでも、日常的なコンテナ削除はほとんど対応できます。

Dockerは「作る・確認する・消す」をセットで覚える

Dockerを勉強するとき、docker run でコンテナを作るところまでは覚えても、後片付けの方法を忘れがちです。

しかし実際には、

コンテナを作る
↓
状態を確認する
↓
停止する
↓
不要なら削除する

までが一連の操作です。

InfraAcademyでは、DockerやLinuxなどインフラエンジニアに必要な基礎を、初心者向けに段階的に学べる教材を用意しています。

Dockerのコマンドを単体で暗記するのではなく、「コンテナが今どの状態なのか」を確認しながら覚えていくのがおすすめです。

InfraAcademyでインフラ技術を学ぶ

docker rmの使い方まとめ

今回は、Dockerコンテナを削除する docker rm コマンドについて解説しました。

基本は、

docker ps -a
docker stop コンテナ名
docker rm コンテナ名

です。

大量の停止済みコンテナを整理するなら、

docker container prune

を利用できます。

また、-f は起動中コンテナを強制終了して削除するため、普段は停止してから削除する方が安全です。

そして、コンテナ、イメージ、ボリュームは別のDockerオブジェクトです。

削除コマンドを実行する前に、

「今から何を削除するのか」

を確認する習慣を付けておきましょう。

Next Action

記事で読んだ内容を、講座で実装してみましょう

InfraAcademyでは、ブラウザ上でLinuxやネットワークの実践環境を使いながら学習できます。無料で始められる講座から、学習の流れを試せます。

この記事を書いた人

ryu

InfraAcademy運営 / エンジニア

エンジニア歴10年。Linux、ネットワーク、クラウドを中心に、実務で役立つインフラ技術を初心者にもわかりやすく解説しています。

X: @ryu63614894

Related

関連記事

ブログ一覧へ

Roadmap

まずはこの4講座から

ログインすれば無料で始められる講座です。気になったテーマから手を動かして学べます。

講座一覧を見る