docker devmapperとCentOS7のスペースの問題


103

私はドッカーを学び、v1.11.0を使用しています。hadoopをインストールしようとしていますが、devmapperがディスクの空き容量について不平を言っていますか?

devmapper: Thin Pool has 82984 free data blocks which is less than minimum required 163840 free data blocks. Create more free space in thin pool or use dm.min_free_space option to change behavior

画像をすべて削除しましたが、問題が解決しません:

[root@localhost hadoop_docker]# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
debian              latest              47af6ca8a14a        3 weeks ago         125 MB
[root@localhost hadoop_docker]#

これは私のディスク構成です:

[root@localhost ~]# lsblk
NAME                       MAJ:MIN RM  SIZE RO TYPE MOUNTPOINT
sda                          8:0    0    8G  0 disk
├─sda1                       8:1    0  500M  0 part /boot
└─sda2                       8:2    0  7.5G  0 part
  ├─centos-root            253:0    0  6.7G  0 lvm  /
  └─centos-swap            253:1    0  820M  0 lvm  [SWAP]
sr0                         11:0    1 1024M  0 rom
loop0                        7:0    0  100G  0 loop
└─docker-253:0-844682-pool 253:2    0  100G  0 dm
loop1                        7:1    0    2G  0 loop
└─docker-253:0-844682-pool 253:2    0  100G  0 dm

質問:どうすればディスク領域を解放できますか?

ありがとうございました


1
これは、ループバックの回復不可能なストレージの問題におけるデバイスマッパーにも関連していますか?github.com/docker/docker/issues/3182デバイスマッパーは本番環境での使用は推奨されません」。いくつかの理由でdevicemapperから離れたほうがよいでしょう。もちろん、オーバーレイストレージドライバー、YMMVに切り替えるのは簡単ですが、多すぎないことを願っています。'rm -rf / var / lib / docker'は、切り替え時には多少オプションですが、簡単です。強くお勧めします。 projectatomic.io/blog/2015/06/...
gaoithe

1
参考までに、シンプールのディスク使用量は「sudo lvs」で確認できます。これは、(与えられた回答を使用して)クリーンアップする必要がある「どれだけ」のディスク容量を把握しようとしている場合に役立ちます。
アーロンD.マラスコ2017

回答:


28

以下を使用できます。

docker system prune -a -f --volumes

どこ:

  • -a ==未使用の画像をすべて削除します
  • -f ==力
  • --volumes ==ボリュームを整理します。

参照:https : //docs.docker.com/engine/reference/commandline/system_prune/#description

補足として、私の環境でdevicemapperドライバーを使用すると、多くの問題が発生しました。私は以前言ったように掃除をしていましたが、他のデバイスマッパーの問題がまだありました。overlay2に移行することを強くお勧めします。ほとんどすべてが完全に解決されました。


1
@ Cokoda-Rakaの答えでコマンドを定期的に実行しますが、特定のDockerホストの1つであるこのコマンドは、overaly2が必要以上のディスクスペースを使い果たしたときに必要でした。このコマンドを自動クリーンアップタスクにも追加すると思います。
StockB

1
これは、Docker 1.13.1を備えたRHEL 7で役立ちました。実行した後docker container prunedocker image prunedocker volume prune、我々はまだdevmapper /シンプールのエラーを得ました。上記のコマンドは機能し、必要なスペースを空け、デーモンを再起動する必要がなくなりました。
Johnathan Elmore

167

これら3つを実行するだけです。実行中のコンテナを削除する必要はありません。

  1. 終了したプロセスのクリーンアップ:

    docker rm $(docker ps -q -f status=exited)
    
  2. ぶら下がりボリュームのクリーンアップ:

    docker volume rm $(docker volume ls -qf dangling=true)
    
  3. ぶら下がり画像のクリーンアップ:

    docker rmi $(docker images --filter "dangling=true" -q --no-trunc)
    

4
私はここからそれを学んだ:stackoverflow.com/questions/32723111/...
Cokordaラカ

19
バージョン1.13では、docker system prune docs.docker.com / engine / reference / commandline / system_prune
Vivek Kodira

1
これはおそらく受け入れられる答えになるはずです。他の答えは、あなたが殺したいよりも多くのコンテナを殺す可能性があります。
DigitalFiz

2
このコマンドは、マシンのディスクをクリーンアップするのに非常に役立ちますが、デバイスマッパーとスペースの問題は修正されませんでした。
パウロオリベイラ

4
このエラーメッセージの意味がまだわからないので、これらのコマンドが機能しても、その理由を完全には理解できません。「シンプール」とは?また、既存のプロセスは「データブロックの解放」とどのような関係があるのでしょうか。
yiati 2017年
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.