Docker構築エラー:Create more free space in thin pool or use dm.min_free_space option to change behavior.

2231 ワード

文書ディレクトリ
  • 問題現象
  • 問題分析
  • ソリューション
  • 参照リンク
  • もんだいげんしょう
    夜にdockerを使用してコンストラクションタスクを行う場合、docker run xxxコマンドを実行すると、エラーが次のように返されます.
    docker: Error response from daemon: devmapper: 
    Thin Pool has 264381 free data blocks which is less than minimum required 264503 free data blocks.
     Create more free space in thin pool or use dm.min_free_space option to change behavior.
    

    もんだいぶんせき
    シンクホスト上でdocker infoコマンドを実行すると、結果の一部が以下のように表示されます.まず問題を分析すると、フィールドThin Pool Minimum Free Spaceの値は138.7 GBであり、実際に利用可能な値Data Space Availableは138.3 GBである.だから新聞を間違えた.
    Containers: 5
     Running: 4
     Paused: 0
     Stopped: 1
    Images: 3237
    Server Version: 1.12.6
    Storage Driver: devicemapper
     Pool Name: docker-thinpool
     Pool Blocksize: 524.3 kB
     Base Device Size: 10.74 GB
     Backing Filesystem: xfs
     Data file:
     Metadata file:
     Data Space Used: 968.1 GB
     Data Space Total: 1.387 TB
     Data Space Available: 138.3 GB
     Metadata Space Used: 262.7 MB
     Metadata Space Total: 14.6 GB
     Metadata Space Available: 14.33 GB
     Thin Pool Minimum Free Space: 138.7 GB
     ...... 
    

    ソリューション
    閉じたすべてのコンテナを削除
    docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm
    

    すべてのdanglingミラー(tagなしミラー)を削除します.
    docker rmi $(docker images | grep "^" | awk "{print $3}")
    

    すべてのdanglingデータボリューム(不要なvolume)を削除します.
    docker volume rm $(docker volume ls -qf dangling=true)
    

    暴力的なやり方は命令docker system pruneを使うことができる.docker system pruneコマンドは、ディスクのクリーンアップ、閉じたコンテナの削除、不要なデータボリュームとネットワーク、danglingミラー(tagなしミラー)に使用できます.docker system prune-aコマンドはより徹底的にクリーンアップされ、コンテナがなくDockerミラーを使用して削除することができます.この2つのコマンドは、一時的に閉じたコンテナと、一時的に使用されていないDockerミラーを削除します.
    $ docker system prune -a
    WARNING! This will remove:
            - all stopped containers
            - all volumes not used by at least one container
            - all networks not used by at least one container
            - all images without at least one container associated to them
    Are you sure you want to continue? [y/N] y
    

    リファレンスリンク
    https://docs.docker.com/engine/reference/commandline/system_prune/