macのVMの仮想ディスクの場所を変えられるようになるようです。macでDocker.qcow2というファイルが肥大化する件Docker便利ですね。macが出てからは、もうmac上には環境を作らないなんて運用も可能じゃないかというくらいです。実際、サーバサイド系の環境はほぼ全てDockerで運用してます。gulpとかでブラウザのオートリロードとかしたい場合はさすがに難しいので、そこはmac上に環境を作っておりますが。macを使っていくとディスク容量が日々減っていくのが実感出来るかと思います。macも実体はVMでありVMのディスクとして仮想ディスクがありこの仮想ディスクが~/Library/Containers/com.docker.docker/Data/com.docker.driver.amd64-linuxに作成されています。rmiでイメージを消したら良いのでは?と思うのですがそこはVM、仮想ディスクは一度領域を広げたら、通常運用では領域を解放してくれません。この仮想ディスクを手で小さくしてあげないといけないです。defaultsを選ぶこと。この仮想ディスクをクリアするコマンドでは、今までpullしたイメージや起動させたコンテナなども消してしまいます。Dockerの運用ではあまりないかとは思いますがコンテナにその場限りではあるけど変更を持っててコンテナとかを消したくない、といった場合はこの方法をとると大切な変更が失われてしまいます。そこで、仮想ディスクをshrinkする方法をとることで現状を維持したまま仮想ディスクを小さくする、といったことが可能になります。qemuでqemuというツールをインストールします。このqemuというのは、仮想マシンの一種になります。仮想マシンで有名なところですとVirtualBoxとかVMwareあたりになると思いますが、これらと似たソフトウェアになります。macで使用している仮想ディスクのフォーマットはこのqemuのディスクイメージフォーマットを採用しております。仮想ディスクのファイル名がDocker.qcow2となっています。qemuのインストールが完了したらこのツールの中の仮想ディスクを操作するコマンドがあるのでそのコマンドを使ってDocker.qcow2を変換かけます。変換をかける前に、考慮する部分があり通常ディスク上でファイルを削除した場合にはインデックス上で削除したという情報を管理して、実体は消えていない状態ですが通常の場合だとそこに上書きすることになるので、容量があるという見え方になりますが、仮想ディスクはそのインデックス上では削除されているけれど、実体がある場合も、ディスク容量として消費していることになります。この削除されているけれど実体がある部分を綺麗にしてから変換をすることで、効率よくファイルを小さくする事が出来ます。いうことで、実際に変換するためのコマンドは以下のようにします。これを実行する際に、いらないコンテナ、イメージは全て削除しておくことをお勧めします。-aで一覧表示されるコンテナの中からいらないものを全て削除します。imagesで表示されるイメージで不要そうなものを全て削除します。tty仮想ディスク内で削除されているファイル群を削除します。macのディスク上限)になるまでゼロ埋めファイルを作ってからそのファイルを消すということをやるので、macの容量が少ない場合は結構難しいです。自分の場合は、ddでサイズ指定(例えば、Docker.qcow2の現在のファイルサイズの半分くらい)をして、消してます。inをoffにしてquitしてmacを再起動してます。それから仮想ディスクファイルをshrinkします。Docker.qcow2.new実行時間は、そこそこ長いです。実行が終わると、Docker.qcow2.newというファイルが出来上がっていると思います。Docker.qcow2.new半分位になりましたね。出来上がったら、一応ですが古い方はリネームしておいて新しいものに差し替えます。無事に起動して、dockerコマンドが通るようになれば、問題なくshrinkが完了しました。古い方のDocker.qcow2を削除しましょう。これで、溜まりに溜まったDocker.qcow2のディスクが綺麗になりました。