MENU

Docker のお掃除コマンド pruneの使い方

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
よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

コメント

コメントする

目次