はじめに
以前、docker composeを使用した際に、何回もファイルやディレクトリ操作をミスし、もう一度やり直したいときにどうすれば良いかChatGPT1に出力させたところ、以下のコードが返ってきた。
docker compose down --rmi all --volumes --remove-orphans
それを何回も使っていたので、どういうものか調べてみると、Docker Compose環境を完全にクリーンアップしたいときに使用されるスーパー強行手段みたいでした。
ということで実際にはどういったクリーンアップ方法があるのか調べ、まとめてみました、
環境
以下の環境での説明です。
macOS Sequoia 15.6.1
docker compose環境をクリーンアップしたいとき
おそらく、この方法を使う機会というのは、docker compose buildを使用し、DockerfileからDocker imageが生成された段階だと思います。
はたまた、docker compose upまでいき、コンテナの作成と起動を行っている段階までいってる人もいると思います。
そうした時にクリーンアップは使えます。docker compose buildで失敗している場合は以下のコマンドをうっても変化はないと思います。
クリーンアップの段階
| 段階 | コマンド |
|---|---|
| 環境を部分的に停止 | docker compose down |
| 新しくビルドし直す | docker compose down --rmi all |
| データ含めて完全初期化したい | docker compose down --rmi all --volumes --remove-orphans |
環境を部分的に停止
docker compose downを使用。
- docker compose up で立ち上げたコンテナを停止。それらのコンテナを削除。
- 同時に作られたデフォルトネットワークを削除。
ポイント
- イメージは削除しない
- ボリュームは削除しない
- データや依存関係は保持される
環境を部分的に停止
docker compose downを使用。
- docker compose up で立ち上げたコンテナを停止。それらのコンテナを削除。
- 同時に作られたデフォルトネットワークを削除。
ポイント
- イメージは削除しない
- ボリュームは削除しない
- データや依存関係は保持される
新しくビルドし直したい
docker compose down --rmi allを使用。
- すべての関連イメージを削除
- compose ファイルで定義されたサービス用にビルドまたは取得した Docker イメージを削除
- 次に立ち上げるときは Dockerfile から再ビルドされる。
データ含めて完全初期化したい
docker compose down --rmi all --volumes --remove-orphans
一度、コマンドの整理をします。
| オプション | 意味 | 影響範囲 |
|---|---|---|
--rmi all |
すべての関連イメージを削除 | compose ファイルで定義されたサービス用にビルドまたは取得した Docker イメージを削除 |
--volumes |
すべての関連ボリュームを削除 | DBデータなど、永続化されたストレージを含むボリュームが消える |
--remove-orphans |
現在の docker-compose.yml に記載されていないコンテナも削除 |
古い構成や残骸コンテナをクリーンアップ |
なので、環境を完全にリセットしたいときやDockerfile や依存ライブラリを大きく変更したとき(uby、Rails、Node.js、PostgreSQLなどのバージョンを変更、Gemfile や package.json の依存関係を入れ替えた)などがこのコマンドを使用するケースです。
クリーンアップ後は
docker compose buildで再インストールしてください。大丈夫であれば、docker compose upとその次はコンテナに移動といったかたちで作業を進めてください。
-
Open AI, Inc. の生成AIサービス ↩