追記その1(2017/01/12)
どうやら、Docker for Mac でも頑張ればVMのディスク容量を増やすことはできるようです。
qemu
というツールを使ってボリュームサイズを増やすようですが、Dockerの仮想ホストを作り直すようで作成済みのimageをexportする必要があるなど、自己責任で行う必要がありそうです。
参考URL
- https://community.hortonworks.com/articles/65901/how-to-increase-the-size-of-the-base-docker-for-ma.html
- Docker For MacでDocker.Qcow2というファイルが肥大化する件
- https://forums.docker.com/t/no-space-left-on-device-error/10894/28 (beccari さんの投稿)
追記その2(2017/01/12)
調査すると、6GBほどの必要なさそうなtmpディレクトリがあったので削除しました。
この方法では、VMのディスク容量を増やしていませんが、不要なtmpディレクトリを削除して利用可能領域を増やしています。
Docker for Macでディスク容量が足りなくなった時の対処法(その2)
はじめに
Docker for Mac では20GBくらいのディスク容量が割り当てられてます。
しかし、DBとして使っているうちに容量が足りなくなることがあるかもしれません。その時の対処法です。
ちなみに、Docker for Mac で作成されるdocker用のVMのディスク容量を増やすことはできません!! ->
残念でした!!!qemu
とかいう黒魔術を使えばできそう
With Docker for Mac, you get only one VM, and you don’t manage it. It is managed by the Docker for Mac application, which includes autoupdate to update the client and server versions of Docker.
If you need several VMs and want to manage the version of the Docker client or server you are using, you can continue to use docker-machine, on the same machine, as described in Docker Toolbox and Docker for Mac coexistence.
The Docker for Mac environment
1. MacOS上のvolumeをマウントする(osxfs)
普通にボリュームをマウントするとDocker for MacのVM上にvolumeが作成されるため、ディスク容量不足には対応できません。
version: "2"
services:
db:
image: elasticsearch:latest
volumes:
- "/usr/share/elasticsearch/data" # <- 容量は増えない
command: "elasticsearch -Des.network.host=0.0.0.0"
ports:
- "9200:9200"
- "9300:9300"
Mac上のディレクトリをマウントすることで、ローカルのvolumeがマウントされるので容量が増えます。
version: "2"
services:
db:
image: elasticsearch:latest
volumes:
- "./data/.data:/usr/share/elasticsearch/data" # <- これ
command: "elasticsearch -Des.network.host=0.0.0.0"
ports:
- "9200:9200"
- "9300:9300"
確認してみると確かにosxfs
でマウントされています。
$ docker-compose run es bash
root@ef01fff7ec66:/usr/share/elasticsearch# df -h
Filesystem Size Used Avail Use% Mounted on
none 18G 12G 5.9G 66% /
tmpfs 1001M 0 1001M 0% /dev
tmpfs 1001M 0 1001M 0% /sys/fs/cgroup
/dev/vda1 18G 12G 5.9G 66% /etc/hosts
shm 64M 0 64M 0% /dev/shm
osxfs 465G 311G 155G 67% /usr/share/elasticsearch/data
しかし、この方法では微妙に書き込みや読み込みの速度が悪化してしまうことがあります。
(私の環境では書き込みにかかる時間が2倍くらいに増えました。)
2. 諦めてdocker-machine
を使う
Docker for Macに手をいれることはできないので諦めましょう
docker-machine
を使って 50GB
のディスク容量を持ったVMを作ります。
docker-machine create --driver virtualbox --virtualbox-disk-size "50000" dev
確認してみると確かに、50GBくらいのディスク容量がマウントされてます。
$ docker run --rm -it busybox sh
/ # df -h
Filesystem Size Used Available Use% Mounted on
none 46.3G 410.3M 43.4G 1% /
tmpfs 497.9M 0 497.9M 0% /dev
tmpfs 497.9M 0 497.9M 0% /sys/fs/cgroup
/dev/sda1 46.3G 410.3M 43.4G 1% /etc/resolv.conf
/dev/sda1 46.3G 410.3M 43.4G 1% /etc/hostname
/dev/sda1 46.3G 410.3M 43.4G 1% /etc/hosts
shm 64.0M 0 64.0M 0% /dev/shm
tmpfs 497.9M 0 497.9M 0% /proc/kcore
tmpfs 497.9M 0 497.9M 0% /proc/timer_stats
まとめ
ディスク容量くらいいじれるようにしてほしい。クソが。
もし、Docker for Mac でもディスク容量を増やす方法をご存知の方がいらっしゃいましたら教えてください。
あと、初心者なので用語の使い方がめちゃくちゃですが優しく教えていただければと思います。