Docker 清理數據卷 volumes


Docker 查看數據卷及磁盤使用情況

Docker 在長時間使用的情況下,經常需要刪除舊的容器並創建新的容器,長此以往,Docker 的數據卷 volumes 會產生了非常多的僵屍文件,這些將是穩健大都是未綁定容器的目錄

 

查詢僵屍文件

在 Docker 1.9 以上的版本中,官方提供用於查詢僵屍文件的命令:

docker volume ls -qf dangling=true

 

Docker 1.13 引入了類似於 Linux 上 df 的命令,用於查看 Docker 的磁盤使用情況

docker system df
'''
TYPE                TOTAL               ACTIVE              SIZE                RECLAIMABLE
Images              2                   1                   306.6MB             233.7MB (76%)
Containers          1                   1                   12.62GB             0B (0%)
Local Volumes       20                  0                   16GB                16GB (100%)
Build Cache         0                   0                   0B                  0B
'''

 

上述信息可以看出

  • Docker 鏡像占用了 306.6MB 磁盤,
  • Docker 容器占用了 12.62GB 磁盤,
  • Docker 數據卷占用了 16GB 磁盤。

 

Docker 刪除無用數據卷 

手動刪除命令

# 刪除所有dangling數據卷(即無用的Volume,僵屍文件)
docker volume rm $(docker volume ls -qf dangling=true)

# 刪除所有dangling鏡像(即無tag的鏡像)
docker rmi $(docker images | grep "^<none>" | awk "{print $3}")

# 刪除所有關閉的容器
docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm

 

刪除關閉的容器、無用的數據卷和網絡,以及dangling鏡像(即無tag的鏡像)

  注意,所有關閉的容器都會被刪除,請核查是否存在關閉運行但是需要保留的容器

# 刪除關閉的容器、無用的數據卷和網絡
docker system prune
# 刪除更徹底,可以將沒有容器使用Docker鏡像都刪掉
docker system prune -a

 

重啟 Docker

  使用上面幾個方法的命令可以有效清理 Docker 運行所產生的無用文件,且無需重啟 Docker 即可生效。

  但是 Docker 也許存在某些 bug(內核 3.13 版本的 Docker 確診),導致 Docker 無法清理一些無用目錄,不過重啟 Docker 可以解決這個問題

 

 

 

 

參考:https://blog.csdn.net/truelove12358/article/details/102949386


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM