prune
を使うと以下を削除できる。
- image
- コンテナ
- ボリューム
- ネットワーク
全部まとめて削除するコマンドもあるけど、各々削除してみる。
なお、公式を読めば一発。
公式サイトのpruneの説明:https://docs.docker.jp/config/pruning.html
目次
Imageの削除
基本的なコマンド
// タグを持たず、他のコンテナからも参照されないイメージを削除
$ docker image prune
// 既存のコンテナ~使われていないイメージを全て削除
$ docker image prune -a
// 上記コマンドでは、デフォルトで削除処理を続行するかどうか聞かれるが、無視して削除する
$ docker image prune -f
やってみる
// 作成済みのimage一覧表示
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
laravel-on-docker-php latest f959517db089 9 hours ago 475MB
<none> <none> d840d36e022f 9 hours ago 475MB
laravel-on-docker-nginx latest 6190d7a2ed9b 9 hours ago 142MB
<none> <none> e3306820c2c1 9 hours ago 475MB
<none> <none> 258316a8f043 2 months ago 142MB
<none> <none> 00fea1ad7562 6 months ago 521MB
<none> <none> 6907293d9615 6 months ago 142MB
// 動いているコンテナを止めて、削除
$ docker compose stop
Stopping docker_php_1 ... done
Stopping docker_nginx_1 ... done
$ dcom rm
Going to remove docker_php_1, docker_nginx_1
Are you sure? [yN] y
Removing docker_php_1 ... done
Removing docker_nginx_1 ... done
// 削除してみる
$ docker image prune -a
WARNING! This will remove all images without at least one container associated to them.
Are you sure you want to continue? [y/N] y
Deleted Images:
untagged: laravel-on-docker-nginx:latest
deleted: sha256:6190d7a2ed9b2d5894e5fe6418045d64a612af9d72df7d2f6b71646f5cce7671
untagged: laravel-on-docker-php:latest
deleted: sha256:f959517db0890cfcbd64184e0c12715db45825c590941e5a3c19a84e28500a6a
Total reclaimed space: 0B
// 消えました!
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
コンテナの削除
基本的なコマンド
$ docker container prune
やってみる
// 起動中のコンテナを見てみる
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
709a3a9d0a7a laravel-on-docker-nginx "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp docker_nginx_1
a858d685d218 laravel-on-docker-php "docker-php-entrypoi…" 2 minutes ago Up 2 minutes 9000/tcp docker_php_1
// やってみる
$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B // 消えない!
// コンテナを停止
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
709a3a9d0a7a laravel-on-docker-nginx "/docker-entrypoint.…" 5 minutes ago Exited (0) 17 seconds ago docker_nginx_1
a858d685d218 laravel-on-docker-php "docker-php-entrypoi…" 5 minutes ago Exited (0) 17 seconds ago
// 消えた!
$ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Deleted Containers:
709a3a9d0a7a4b6be8ba26ed087358f1e0ccf69c9a229a85734bbfed58c699ac
a858d685d218a7debd31bb9c13c594fd989bb002eb50310b88260d8f356647f1
Total reclaimed space: 972B
$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ボリュームの削除
基本的なコマンド
$ docker volume prune
やってみる
// 既存ボリューム見てみる
$ docker volume ls
DRIVER VOLUME NAME
local laravel-on-docker_sail-meilisearch
local laravel-on-docker_sail-mysql
local laravel-on-docker_sail-redis
// 消えた!
$ docker volume prune
WARNING! This will remove all local volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
laravel-on-docker_sail-mysql
laravel-on-docker_sail-redis
laravel-on-docker_sail-meilisearch
Total reclaimed space: 188.7MB
$ docker volume ls
DRIVER VOLUME NAME
ネットワークの削除
基本的なコマンド
$ docker network prune
やってみる
// 既存ネットワークを見てみる
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
2dbec06b09a5 bridge bridge local
966f02a88793 docker_default bridge local
75a90a54b534 host host local
3855e8ecea59 none null local
// 消してみる
$ docker network prune
WARNING! This will remove all custom networks not used by at least one container.
Are you sure you want to continue? [y/N] y
// 消えていない!!
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
2dbec06b09a5 bridge bridge local
966f02a88793 docker_default bridge local
75a90a54b534 host host local
3855e8ecea59 none null loca
// ネットワークで起動中のコンテナがあると、消えないので、
// 起動中のコンテナを止める
$ docker compose stop
[+] Running 2/2
⠿ Container docker_php_1 Stopped 0.2s
⠿ Container docker_nginx_1 Stoppe
// 再度消してみる
$ docker network prune
WARNING! This will remove all custom networks not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Networks:
docker_default
// 起動していたコンテナが紐づいていたネットワークが消えた
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
2dbec06b09a5 bridge bridge local
75a90a54b534 host host local
3855e8ecea59 none null local
全てまとめて消す
基本的なコマンド
// イメージ、コンテナ、ネットワークを削除
$ docker system prune
// イメージ、コンテナ、ネットワーク、ボリュームを削除
$ docker system prune --volumes
options
-a:コンテナが紐づいていないイメージも消す
やってみる
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
00fc33c2bc89 6190d7a2ed9b "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp, :::80->80/tcp docker_nginx_1
e88ce8ba39fc f959517db089 "docker-php-entrypoi…" 2 minutes ago Up 2 minutes 9000/tcp docker_php_1
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
laravel-on-docker-php latest f959517db089 9 hours ago 475MB
laravel-on-docker-nginx latest 6190d7a2ed9b 9 hours ago 142MB
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
2dbec06b09a5 bridge bridge local
2e7de5a97857 docker_default bridge local
75a90a54b534 host host local
3855e8ecea59 none null local
// コンテナ止める
$ docker compose stop
[+] Running 2/2
⠿ Container docker_php_1 Stopped 0.2s
⠿ Container docker_nginx_1 Stopped 0.3s
// 消す
$ docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
// 消えた!
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
$ docker network ls
NETWORK ID NAME DRIVER SCOPE
2dbec06b09a5 bridge bridge local
75a90a54b534 host host local
3855e8ecea59 none null local
感想
よく見たら、pruneコマンドを使った時にWARNINGで削除内容が表示されていた。
ちゃんと見たら、何が削除されて何が削除されないのか分かるので、良さげ。
例:
// 止まっているコンテナ
// コンテナが紐づいていないネットワーク
// タグづけされていないイメージ
// を削除
$ docker system prune
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all dangling images
- all dangling build cache
// 止まっているコンテナ
// コンテナが紐づいていないネットワーク
// コンテナに紐づいていないイメージ
// を削除
$ docker system prune -a
WARNING! This will remove:
- all stopped containers
- all networks not used by at least one container
- all images without at least one container associated to them
- all build cache
コメント