Docker for Macでディスク容量が足りなくなった時の対処法(その２)


## TL;DR

DockerVM上の`/var/lib/docker/tmp/`が6GBも使っていたので削除した。

## はじめに

Docker for Mac を使い続けているのですが、大きなイメージを`docker pull`しようとすると `no space left on device` と出てしまい、`docker pull` に失敗してしまいます。

ディスク容量を調べてみると

```bash
$ docker run --rm busybox df -h
Filesystem                Size      Used Available Use% Mounted on
none                     17.9G     14.2G      2.7G  84% /
tmpfs                     1.9G         0      1.9G   0% /dev
tmpfs                     1.9G         0      1.9G   0% /sys/fs/cgroup
/dev/vda1                17.9G     14.2G      2.7G  84% /etc/resolv.conf
/dev/vda1                17.9G     14.2G      2.7G  84% /etc/hostname
/dev/vda1                17.9G     14.2G      2.7G  84% /etc/hosts
shm                      64.0M         0     64.0M   0% /dev/shm
tmpfs                     1.9G         0      1.9G   0% /proc/kcore
tmpfs                     1.9G         0      1.9G   0% /proc/timer_list
tmpfs                     1.9G         0      1.9G   0% /proc/sched_debug
```

`/dev/vda1` がDocker for Mac のDockerホストVMに割り当てられているブロックなので、14GB利用して2.7GBしか、残り容量がないことがわかります。

Docker for Mac をインストールしたての状態で試すと

```bash
$ docker run --rm -it busybox df -h
Filesystem                Size      Used Available Use% Mounted on
none                     17.9G     46.2M     16.9G   0% /
tmpfs                   998.9M         0    998.9M   0% /dev
tmpfs                   998.9M         0    998.9M   0% /sys/fs/cgroup
/dev/vda1                17.9G     46.2M     16.9G   0% /etc/resolv.conf
/dev/vda1                17.9G     46.2M     16.9G   0% /etc/hostname
/dev/vda1                17.9G     46.2M     16.9G   0% /etc/hosts
shm                      64.0M         0     64.0M   0% /dev/shm
tmpfs                   998.9M         0    998.9M   0% /proc/kcore
tmpfs                   998.9M         0    998.9M   0% /proc/timer_list
tmpfs                   998.9M         0    998.9M   0% /proc/sched_debug
```

なので、14GBほど容量を使っていることになります。しかし、こまめに不要なコンテナやイメージを削除していたため、14GBも容量を使っていることには納得いきません。そこで調査することにしました。

## 調査の結果

調査の結果、Docker ホストVMの `/var/lib/docker/tmp/` で、6GBほど容量を使っているようでした。
調査の過程は記録を取るのを忘れていましたが、以下のコマンドを利用しています。

```bash
# macOS上で。Docker VMに入れる
screen ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/tty

# Ctrl + a, d で抜ける
```

```bash
# Docker VM上で
df -h -s *

# これで、どのディレクトリが容量を使っているのかを地道に調べました。多分もっといい方法はあったはず。
```

`/var/lib/docker/tmp/`の中身ですが、なんとなく昔使ってたコンテナの名残のような気がしたので削除することにしました。(tmpだし削除しても問題ないやろという楽観的な姿勢で挑みました)

一応すべてのコンテナは削除してから、`/var/lib/docker/tmp/`の削除を行いました。

```bash
rm -rf /var/lib/docker/tmp/
```


## 削除した結果

```bash
$ docker run --rm busybox df -h
Filesystem                Size      Used Available Use% Mounted on
none                     17.9G      6.2G     10.8G  36% /
tmpfs                     1.9G         0      1.9G   0% /dev
tmpfs                     1.9G         0      1.9G   0% /sys/fs/cgroup
/dev/vda1                17.9G      6.2G     10.8G  36% /etc/resolv.conf
/dev/vda1                17.9G      6.2G     10.8G  36% /etc/hostname
/dev/vda1                17.9G      6.2G     10.8G  36% /etc/hosts
shm                      64.0M         0     64.0M   0% /dev/shm
tmpfs                     1.9G         0      1.9G   0% /proc/kcore
tmpfs                     1.9G         0      1.9G   0% /proc/timer_list
tmpfs                     1.9G         0      1.9G   0% /proc/sched_debug
```

かなり容量が空きました。今の所、使用してみて不具合はありません。
結構楽観的に消しているので、試してみる場合は自己責任でお願いします。

## 参考URL

- [coreos - Can I clean /var/lib/docker/tmp? - Stack Overflow](http://stackoverflow.com/questions/31489802/can-i-clean-var-lib-docker-tmp)
- [/var/lib/docker/tmpをtmpfsにすると動作が早くなる](http://qiita.com/tukiyo3/items/87ab680330199c1adf17)
- [Docker For MacでDocker.Qcow2というファイルが肥大化する件](https://gendosu.jp/archives/3009)
- [Docker for Mac でディスク容量が足りなくなった時の対処法](http://qiita.com/kawasin73/items/ed9b0ccdde4b65b87b35)