LoginSignup
19

More than 5 years have passed since last update.

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

Last updated at Posted at 2016-08-03

追記その1(2017/01/12)

どうやら、Docker for Mac でも頑張ればVMのディスク容量を増やすことはできるようです。
qemu というツールを使ってボリュームサイズを増やすようですが、Dockerの仮想ホストを作り直すようで作成済みのimageをexportする必要があるなど、自己責任で行う必要がありそうです。

参考URL

追記その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が作成されるため、ディスク容量不足には対応できません。

docker-compose.yml
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がマウントされるので容量が増えます。

docker-compose.yml
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 でもディスク容量を増やす方法をご存知の方がいらっしゃいましたら教えてください。
あと、初心者なので用語の使い方がめちゃくちゃですが優しく教えていただければと思います。

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
19