(2016年10月5日に作成された投稿)
イメージを実行して削除するたびに、システムが使用可能なスペースの元の量に戻らないことに気付きました。
私のコンテナーで作業しているライフサイクルは(デフォルトのMac端末で実行)です。
> docker build ...
> docker run CONTAINER_TAG
> docker stop CONTAINER_TAG
> rm docker CONTAINER_ID
> rmi docker image_id
ノードと標準のredisから実行されるカスタムイメージから作成されたコンテナー。私のOSはOSX 10.11.6です。
1日の終わりに、Mbsを失い続けているのがわかります。どうすればこの問題に直面できますか?
編集後の投稿
2020年と問題は解決せず、コミュニティ支援の目的のために去って更新します。
今日の実行:
この問題を回避する最も簡単な方法は、Dockerユーティリティを使用してシステムをプルーニングすることです。
docker system Prune -a --volumes
Dockerは慎重であるので、マウントできるDockerストレージの領域は3つあります-自動的に削除されないのは、終了したコンテナー、未使用のコンテナーボリューム、未使用のイメージレイヤーです。多くのビルドと実行がある開発環境では、それは大量のディスク容量になる可能性があります。
次の3つのコマンドは、使用されていないものをすべてクリアします。
docker rm $(docker ps -a -q)
-停止したコンテナを削除しますdocker rmi $(docker images -f "dangling=true" -q)
-どの画像でも使用されていない画像レイヤーを削除しますdocker volume rm $(docker volume ls -qf dangling=true)
-コンテナで使用されていないボリュームを削除します。これらは安全に実行できます。イメージで参照されているイメージレイヤーや、コンテナーで使用されているデータボリュームは削除されません。それらをエイリアスしたり、CRONジョブに入れたりして、定期的にローカルディスクをクリーンアップすることができます。
Mac上のDockerには、多くの人々を傷つけている別の問題があります。docker.qcow2ファイルは、比率が(最大64GB)大きくなる可能性があり、それ自体が元に戻ることはありません。
https://github.com/docker/for-mac/issues/371
Djs55による返信の1つで述べたように、これは修正される予定ですが、すぐには修正されません。見積もり:
.qcow2は、VMの最大サイズが64GiBのブロックデバイスとして公開されています。新しいファイルがコンテナーによってファイルシステムに作成されると、新しいセクターがブロックデバイスに書き込まれます。これらの新しいセクターは.qcow2ファイルに追加され、最終的に完全に割り当てられるまでサイズが大きくなり、この最大サイズに達すると成長が停止します。
...
私たちはこれをいくつかの段階で修正したいと思っています:(これはまだ計画/設計段階ですが、それがあなたにアイデアを与えることを願っています)
1)TRIMをサポートする接続プロトコルに切り替え、qcow2の横のメタデータファイルにフリーブロックトラッキングを実装します。ディスクを縮小するためにオフラインで実行できる圧縮ツールを作成します(qemu-img変換に少し似ていますが、dd if =/dev/zeroはありません。空のスペースがどこにあるかすでにわかっているので、高速になるはずです。 )
2)圧縮ツールの実行を自動化しますVMリブート。
3)オンラインコンパクターに切り替えます(プログラミング言語のGCと少し似ています)
また、.qcow2の最大サイズを構成可能にすることも検討しています。おそらく、64GiBは環境によっては大きすぎて、小さい方のキャップが役立つでしょう。
docker container Prune
docker system Prune
docker image Prune
docker volume Prune
使用する場合、docker.qcow2(またはHigh SierraのApple Filesystem)のDocker.raw)のファイルサイズは非常に大きく(〜64GiB)、実際よりも大きく見える可能性があることにも言及する価値があります。次のコマンド:
ls -klsh Docker.raw
これは、物理的なサイズではなくファイルの論理的なサイズを出力するため、誤解を招く可能性があります。
ファイルの物理サイズを確認するには、次のコマンドを使用できます。
du -h Docker.raw
ソース: https://docs.docker.com/docker-for-mac/faqs/#disk-usage
Dockerのディスクスペースを制限する方法にはいくつかのオプションがあります。まず、ログを制限/回転することから始めます。 Dockerコンテナーログはすべてのディスクスペースを使用しています
例えば。 Dockerの最新バージョンがある場合は、コンテナごとに--log-opt max-size=50m
オプションを指定して起動できます。また、古い未使用のコンテナがある場合は、/var/lib/docker/containers/*/*-json.log
にあるDockerログを確認することを検討してください。