centos7清理docker垃圾文件
相信很多朋友都有這個docker容器導致主機磁盤空間滿了的問題,應用容器在宿主機上長期運行,應用實例啟停容器,會產生大量的停止的容器,無容器使用的數據卷、網絡配置,無容器依賴的鏡像,這些垃圾日積月累,會影響到宿主機的運行狀態,造成機子卡頓等現象。因此,需要對這些宿主機的垃圾進行清理.下面我們來看看怎么清理.
系統:centos 7.x(64位)
1.查看docker磁盤使用情況
docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 28 9 13.13GB 8.008GB (61%)
Containers 9 9 266.3MB 0B (0%)
Local Volumes 2 2 3.314GB 0B (0%)
Build Cache 0 0 0B 0B
此命令可以得知:
實例上一共有28個鏡像,鏡像占用了13.13G的磁盤,容器有9個在運行,占用了266.3MB的磁盤,可回收的(RECLAIMABLE)磁盤空間為61%.
2.清理磁盤空間
docker system prune命令可以用于清理磁盤,刪除關閉的容器、無用的數據卷和網絡,以及 dangling 鏡像(即無 tag 的鏡像,參考What are Docker : images?).docker system prune -a命令清理得更加徹底,可以將沒有容器使用 Docker 鏡像都刪掉。注意,這兩個命令會把你暫時關閉的容器,以及暫時沒有用到的 Docker 鏡像都刪掉了...所以使用之前一定要想清楚
docker system prune

ps:
可以看到羅列出4種會被prune的對象以及其他信息,包括:
1)stopped containers, 不是運行狀態的container
2)unused volumes,不被任何container引用的volume,所謂dangling volume,一般刪除了某個container后,可能會產生這樣的volume,可以通過docker rm -v避免這種dangling volume
3)unused network,不被任何container引用的network
4)dangling images,不被任何container引用的image
5)每個被刪除的對象都能看到它的ID,比如container ID、volume ID
6)最后有個釋放空間大小的summary
3.清理docker鏡像
當你鏡像太多的時候,但你又不知道那些鏡像在用,那些沒在用的時候,可以使用下面的命令來處理:
docker rmi $(docker images -qf "dangling=true")
當然這里還提供一個這樣的命令,只清除超過創建時間超過24小時的鏡像:
docker image prune -a --filter "until=24h"
4.清理Docker容器日志
ls -lh $(find /var/lib/docker/containers/ -name *-json.log)
找到最大的那個日志,然后執行:
cat /dev/null >json.log
or
把所有的容器日志都清理掉:
cat /dev/null > *-json.log
ps:
刪除所有容器
docker rm -f $(sudo docker ps -qa)
刪除所有關閉的容器
docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm
刪除所有dangling數據卷(即無用的Volume)
docker volume rm $(docker volume ls -qf dangling=true)
再次顯示所有的容器和數據卷,確保沒有殘留
docker ps -a
docker volume ls
好了,以上介紹的命令請大家根據自己的情況去進行執行,最后提醒一句,執行前先確認清楚那些是可以刪 可以停的,不然到時候搞出問題來的話,別來找我.
本文來自博客園,作者:{春光牛牛,yak},轉載請注明原文鏈接:http://www.rzrgm.cn/yakniu/p/16981894.html
歡迎各位大佬們評論指正
QQ討論群:610129902


浙公網安備 33010602011771號