LoginSignup
26

More than 5 years have passed since last update.

Docker for Macで容量が増え続けてしまう

Posted at

原因

Docker for Macを利用開始してから、ディスク容量がガッツリと減っていることに気付いた。
色々なイメージをダウンロードしすぎたかなと思って、不要なイメージをdocker rmi hogehogeなど実行しても容量が開放されない。

色々と調べてみたところ、下記のファイルのサイズがやたらと大きい。

~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux/Docker.qcow2

このファイルは、ダウンロードしたイメージが一式格納されているVMの実体ファイルのようだ。
※qcow2は、「qemu」という仮想マシンのファイル。
※インストール直後の初期状態だとファイルサイズは1.1Gだった(Docker Ver.1.12.6)。

「イメージの削除」は、VM内のファイルの削除ということになるので、VMの実体ファイルは縮小されないのだろう。

解決策

検索してみると、同様の症状の人が多い。
解決策としては、以下のいずれかのようだ。

  • 解決策1:Docker for Macのリセットをする。
  • 解決策2:qemuをインストールして、イメージをshrinkさせる(非常に有用な参考記事:https://gendosu.jp/archives/3009)

解決策1は、ダウンロードしたイメージや作成したコンテナが全て消えてしまう。
永続化データなどは、全てバックアップしてから実施しないといけない。

解決策2は、必要なイメージやコンテナを保持したまま実施できる。
詳細は、上記リンク先を確認してもらうとして、簡単な概要だけここにメモしておく。

解決策2の概要

実施前に、不要なイメージやコンテナは削除しておいた方が良い。

# qemuのインストール(MacPorts)
% sudo port install qemu

## Docker for Macの本体のVMにログイン
% cd ~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linux
% screen tty

## /var/tempfileに0書き出しすることで、仮想ディスク内で削除されているファイル群を削除。
## 上記リンク先では、ddでサイズ指定(例えば、Docker.qcow2の現在のファイルサイズの半分くらい)をして消しているようだ。
vm> dd if=/dev/zero of=/var/tempfile
vm> rm /var/tempfile

ここまで来たら、Docker for Macを停止して、仮想ディスクファイルをshrink

% qemu-img convert -O qcow2 Docker.qcow2 Docker.qcow2.new
% rm Docker.qcow2
% mv Docker.qcow2.new Docker.qcow2

Docker for Macを起動して完了。

都合により上記ゼロ埋め後の削除は実施しなかったが、qemu-imgによりshrinkだけで5.9Gが4.9Gに減った。

余談

上記のことから、下記の環境をDocker for Macで全て構築すると、不要にディスク容量を圧迫し、そのメンテナンスに手間がかかってしまう。

Docker for macを使うことで、Virtual Boxを利用しなくて済むので喜んでいたけど、「継続して利用したい環境」、「気軽に試す環境」などのように、ある程度の固まり毎にVagrantでDocker環境を分割した方が良いのかもしれない。

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
26