日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

[转帖]Docker 清理占用的磁盘空间

發布時間:2023/12/10 编程问答 31 豆豆
生活随笔 收集整理的這篇文章主要介紹了 [转帖]Docker 清理占用的磁盘空间 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

Docker(二十七)-Docker 清理占用的磁盤空間

https://www.cnblogs.com/zhuochong/p/10076599.html docker system docker network一系列的docker 命令 感覺挺有裨益的 去年的時候還用過 一段時間不用 忘記的干干凈凈了.

?

1. docker system命令

docker system df命令,類似于Linux上的df命令,用于查看Docker的磁盤使用情況:

docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 147 36 7.204GB 3.887GB (53%)
Containers 37 10 104.8MB 102.6MB (97%)
Local Volumes 3 3 1.421GB 0B (0%)
Build Cache 0B 0B

可知,Docker鏡像占用了7.2GB磁盤,Docker容器占用了104.8MB磁盤,Docker數據卷占用了1.4GB磁盤。

docker system prune命令可以用于清理磁盤,刪除關閉的容器、無用的數據卷和網絡,以及dangling鏡像(即無tag的鏡像)。docker system prune -a命令清理得更加徹底,可以將沒有容器使用Docker鏡像都刪掉。注意,這兩個命令會把你暫時關閉的容器,以及暫時沒有用到的Docker鏡像都刪掉了…所以使用之前一定要想清楚吶。

執行docker system prune -a命令之后,Docker占用的磁盤空間減少了很多:

docker system df
TYPE TOTAL ACTIVE SIZE RECLAIMABLE
Images 10 10 2.271GB 630.7MB (27%)
Containers 10 10 2.211MB 0B (0%)
Local Volumes 3 3 1.421GB 0B (0%)
Build Cache 0B 0B

2. 手動清理Docker鏡像/容器/數據卷

對于舊版的Docker(版本1.13之前),是沒有docker system命令的,因此需要進行手動清理。這里給出幾個常用的命
刪除所有關閉的容器

docker ps -a | grep Exit | cut -d ' ' -f 1 | xargs docker rm

刪除所有dangling鏡像(即無tag的鏡像):

docker rmi $(docker images | grep?"^<none>" | awk?"{print?$3}")
docker rmi $(docker images | grep "^" | awk "{print $3}")
docker rmi $(docker images | grep "none" | awk '{print $3}')

sudo docker rmi -f $(sudo docker images -a | awk {'print $3'})

刪除所有dangling數據卷(即無用的volume):

docker volume rm $(docker volume ls -qf dangling=true)


3. 限制容器的日志大小

有一次,當我使用1與2提到的方法清理磁盤之后,發現并沒有什么作用,于是,我進行了一系列分析。

在Ubuntu上,Docker的所有相關文件,包括鏡像、容器等都保存在/var/lib/docker/目錄中:

du -hs /var/lib/docker/
97G /var/lib/docker/

Docker竟然使用了將近100GB磁盤,這也是夠了。使用du命令繼續查看,可以定位到真正占用這么多磁盤的目錄:

92G /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7ddae7a53

docker ps可知,nginx容器的ID恰好為a376aa694b22,與上面的目錄/var/lib/docker/containers/a376aa694b22的前綴一致:

docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
a376aa694b22 192.168.59.224:5000/nginx:1.12.1 "nginx -g 'daemon off" 9 weeks ago Up 10 minutes nginx

因此,nginx容器竟然占用了92GB的磁盤。進一步分析可知,真正占用磁盤空間的是nginx的日志文件。那么這就不難理解了。

使用truncate命令,可以將nginx容器的日志文件“清零”:

truncate -s 0 /var/lib/docker/containers/a376aa694b22ee497f6fc9f7d15d943de91c853284f8f105ff5ad6c7ddae7a53/*-json.log

當然,這個命令只是臨時有作用,日志文件遲早又會漲回來。要從根本上解決問題,需要限制nginx容器的日志文件大小。這個可以通過配置日志的max-size來實現,下面是nginx容器的docker-compose配置文件:

nginx:
image: nginx:1.12.1
restart: always
logging:
driver: "json-file"
options:
max-size: "5g"

重啟nginx容器之后,其日志文件的大小就被限制在5GB,再也不用擔心了~

4. 重啟Docker

還有當我清理了鏡像、容器以及數據卷之后,發現磁盤空間并沒有減少。根據Docker disk usage提到過的建議,我重啟了Docker,發現磁盤使用率從83%降到了19%。根據高手指點,這應該是與內核3.13相關的BUG。

轉載于:https://www.cnblogs.com/jinanxiaolaohu/p/10640304.html

總結

以上是生活随笔為你收集整理的[转帖]Docker 清理占用的磁盘空间的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。