Docker の容量不足解決（docker system prune）


Docker の容量不足解決（docker system prune）
===

定期的に image を整理していたが、```docker pull```で```no space left on device```のエラーメッセージが表示。volume の整理も必要だった。

```
failed to register layer: Error processing tar file(exit status 1): write /tmp/xxxxx.tar.gz: no space left on device
```

## 1. Dockerのディスク利用状況を確認

```docker system df```でディスク容量を確認したところ、Local Disk が解放されておらず、ゴミが残っていた。

```
# Docker のディスク利用状況を確認
> docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              0                   0                   0B                  0B
Containers          0                   0                   0B                  0B
Local Volumes       20                  0                   24.84GB             24.84GB (100%)
Build Cache         0                   0                   0B                  0B

# -v オプションで詳細表示
> docker system df -v
Images space usage:

REPOSITORY          TAG                 IMAGE ID            CREATED ago         SIZE                SHARED SIZE         UNIQUE SiZE         CONTAINERS

Containers space usage:

CONTAINER ID        IMAGE               COMMAND             LOCAL VOLUMES       SIZE                CREATED ago         STATUS              NAMES

Local Volumes space usage:

VOLUME NAME                                                        LINKS               SIZE
2377861222d0a9f4c17b0c8be0fcfb6007349e9dc49068101d6c7154363f4976   0                   0B
52277ff5bdde3f484517af28f16816a996fafafd5f9eeaddbb8e59be0c60e796   0                   0B
5983a937123b4d17fdae4b4cb8c08c70748561c08d11aa5c3034f38541da7179   0                   708.3MB
6f0262bd4dd1066ec7a987faf6da9df982fa5ea0a80d632941b72344bc878438   0                   0B
a73a80634dead8ddcab26efaea9e5797ad45cc294ebe7a87c8becdf409aa3c37   0                   0B
baf1805f456114edbaf028c5bc0bd67f389ceb50bc608f2a5fd5adf954058617   0                   2.603GB
c2e923a9c223eed4bfe6defe557e440caef6cb7365c5649ea1725cee6af9e08a   0                   2.904GB
cf18c04e5215684308d4cee58c21b95eec5381bdbe5208eb2a48fe377d040804   0                   1.603GB
19ecc06a2c2d6132580abfa4c413cb774da14f7e938fb338a91777b10518066c   0                   0B
44f790154c7c201fdd5c1af3ff9201daf7250877182f0cd15f8728d699a0cb1f   0                   0B
82e87dc844c920dd72a76da76595993bd5ff5f86477415030acf2e748cfa1f28   0                   0B
a0b5acb21756b67d94b5144ac0b5cf04776b2ca0b4ec62fcd2c2c817c92c4c04   0                   0B
b9479d8e3c39e4de77a9d55593f73c494be9119586308521c1a6546fde8d7fb0   0                   0B
1497355c88a433d4fe13a567d9ca0153bd7b97a8a9c1859a94f40282261f80c3   0                   4.099GB
1f716a79a3671e43993b2634332d116ecb081a83d50e779f66ed99960d03b2e8   0                   214.6MB
211540c7f99f1e12c56d30b51a3728c21184df6c24157c268c1021d9247cb483   0                   1.042GB
2a01ea022c20ee208be8ab04ecab82af49dd4c2f798d87dcda6a9372844eea7a   0                   7.565GB
01be05291c0c111c95accf0e2405e7b36ba3107ea0b105bda8df44de10efaf6a   0                   4.099GB
3b822d8dbbee8f7735ffdc95d7a9b7a81964803e56993d2d250e3fae4fd064f4   0                   0B
bbb13ca2318b3259601dd035dc1ede9344eacd485c459335ad0941137dfc2c91   0                   0B

Build cache usage: 0B
```

## 2. Local Volumes の整理

```docker system prune```は、Docker のバージョンによって動作が異なる。
<b>docker docs - docker system prune</b>
https://docs.docker.com/engine/reference/commandline/system_prune/

### Docker 17.06.1以降

不要な volume を削除するには、```--volumes```オプションの付与が必要。

```
# 不要なコンテナ／ネットワーク／イメージ／ボリュームの一括削除
> docker system prune -a --volumes
WARNING! This will remove:
        - all stopped containers
        - all networks not used by at least one container
        - all volumes not used by at least one container
        - all images without at least one container associated to them
        - all build cache
Are you sure you want to continue? [y/N]
```

オプション```--volumes```なしで実行すると、WARNING に volumes の記載がない。

```
# 不要なコンテナ／ネットワーク／イメージの一括削除(ボリュームは対象外)
> 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
Are you sure you want to continue? [y/N]
```

### Docker 17.06.1 より古いバージョン

```docker system prune -a```で、不要なコンテナ／ネットワーク／イメージ／ボリュームを一括削除する。

## 3. 個別に削除する場合

```
# 不要コンテナの一括削除
> docker container prune

# 不要ネットワークの一括削除
> docker network prune

# 不要イメージの一括削除
> docker image prune

# 不要ボリュームの一括削除
> docker volume prune
```

確認環境では、整理する必要があるのはボリュームのみであるため、以下で実施。

```
> 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:
2377861222d0a9f4c17b0c8be0fcfb6007349e9dc49068101d6c7154363f4976
5983a937123b4d17fdae4b4cb8c08c70748561c08d11aa5c3034f38541da7179
a73a80634dead8ddcab26efaea9e5797ad45cc294ebe7a87c8becdf409aa3c37
cf18c04e5215684308d4cee58c21b95eec5381bdbe5208eb2a48fe377d040804
a0b5acb21756b67d94b5144ac0b5cf04776b2ca0b4ec62fcd2c2c817c92c4c04
b9479d8e3c39e4de77a9d55593f73c494be9119586308521c1a6546fde8d7fb0
bbb13ca2318b3259601dd035dc1ede9344eacd485c459335ad0941137dfc2c91
c2e923a9c223eed4bfe6defe557e440caef6cb7365c5649ea1725cee6af9e08a
2a01ea022c20ee208be8ab04ecab82af49dd4c2f798d87dcda6a9372844eea7a
44f790154c7c201fdd5c1af3ff9201daf7250877182f0cd15f8728d699a0cb1f
52277ff5bdde3f484517af28f16816a996fafafd5f9eeaddbb8e59be0c60e796
6f0262bd4dd1066ec7a987faf6da9df982fa5ea0a80d632941b72344bc878438
82e87dc844c920dd72a76da76595993bd5ff5f86477415030acf2e748cfa1f28
baf1805f456114edbaf028c5bc0bd67f389ceb50bc608f2a5fd5adf954058617
01be05291c0c111c95accf0e2405e7b36ba3107ea0b105bda8df44de10efaf6a
1497355c88a433d4fe13a567d9ca0153bd7b97a8a9c1859a94f40282261f80c3
19ecc06a2c2d6132580abfa4c413cb774da14f7e938fb338a91777b10518066c
3b822d8dbbee8f7735ffdc95d7a9b7a81964803e56993d2d250e3fae4fd064f4
1f716a79a3671e43993b2634332d116ecb081a83d50e779f66ed99960d03b2e8
211540c7f99f1e12c56d30b51a3728c21184df6c24157c268c1021d9247cb483

Total reclaimed space: 24.84GB

# Docker のディスク利用状況を再確認
> docker system df
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              0                   0                   0B                  0B
Containers          0                   0                   0B                  0B
Local Volumes       0                   0                   0B                  0B
Build Cache         0                   0                   0B                  0B
```