前言
補(bǔ)充docker知識(shí)點(diǎn),可看我之前的文章:Docker零基礎(chǔ)從入門到精通(全)
docker 鏡像特別容易占空間,稍微不注意可能磁盤爆滿
通過df - h
查看的時(shí)候,磁盤已經(jīng)達(dá)到95%:
1. Docker System 命令
先用docker system df
命令查看
再用docker system prune
清理
(清理命令 謹(jǐn)慎使用,注意作用以及波及范圍!??! )
不確定的記得備份,或者 先食用該博文中的第二三章節(jié)!
1.1 docker system df
查看docker 占用的存儲(chǔ)空間: docker system df
截圖如下:
具體的參數(shù)類型如下:
TYPE參數(shù)(docker 磁盤類型) | 具體說明 |
---|---|
Images | 所有鏡像占用空間 |
Containers | 運(yùn)行容器占用空間(主要是讀寫層) |
Local Volumes | 本地?cái)?shù)據(jù)卷占用空間 |
Build Cache | 鏡像構(gòu)建產(chǎn)生的緩存空間 |
RECLAIMABLE 代表可回收的大小
1.2 docker system prune
該命令主要用來 刪除停止的容器、無用的數(shù)據(jù)卷、網(wǎng)絡(luò)和無tag的鏡像:docker system prune
補(bǔ)充其它刪除容器的命令,以下兩個(gè)命令主要用來刪除所有的容器
- $ docker rm -f $(docker ps -aq)
- $ docker container rm -f $(docker container ls -aq)
執(zhí)行 docker system prune
截圖如下(再次使用docker system df 查看,占用空間已經(jīng)被回收了):
再次使用df -h
查詢時(shí),發(fā)現(xiàn)占用空間清除很多
如果加入 -a
參數(shù),會(huì)更加暴力,會(huì)把數(shù)據(jù)庫鏡像及容器全刪了(正常使用的不會(huì)被刪除):docker system prune -a
慎用這個(gè) docker system prune -a
來清理,一定要先備份
2. 冗余容器或鏡像
除了以上的方式進(jìn)行回收處理,還有一些冗余過期的容器或者鏡像
可看我這篇文章:批量刪除docker過期停止的容器(全)
3. 限制容器日志
使用du -hs /var/lib/docker/
命令 查看Docker所有相關(guān)文件,包括鏡像、容器等
截圖如下(這已經(jīng)是我刪除之后的):
如果發(fā)現(xiàn)內(nèi)存占用空間比較大,對(duì)應(yīng)通過du 命令 一個(gè)個(gè)查看哪個(gè)容器或者鏡像過大
-
方案一:(???)
通過docker ps
的命令, 發(fā)現(xiàn) 的某個(gè)容器id
與/var/lib/docker/containers/容器id
一致
可以用truncate
命令,可以將該容器的日志文件歸零
具體命令:truncate -s 0 /var/lib/docker/containers/容器id
-
方案二:(?)
直接在該容器目錄下 執(zhí)行rm -rf
即可
(但該方法通過df -h 查看會(huì)發(fā)現(xiàn)其內(nèi)存占用空間并沒有很快釋放,如果有用戶在讀取改文件的時(shí)候還是可以查看,只有重啟系統(tǒng)的時(shí)候,空間才會(huì)被釋放)
-
方案三:(?????)
長久有效,就限制docker 的日志文件大小(網(wǎng)友答案)
====
方案三補(bǔ)充1:
通過配置容器docker-compose的max-size選項(xiàng)
nginx:
image: nginx:1.12.1
restart: always
logging:
driver: "json-file"
options:
max-size: "5g"
====
方案三補(bǔ)充2:,生成一個(gè)json文件:vim /etc/docker/daemon.json
,若有就不用新建,直接補(bǔ)充下面這兩個(gè)即可
log-driver 代表文件名,不加系統(tǒng)使用默認(rèn)
{
"log-driver":"json-file",
// 日志大小上限是500M,有3個(gè)文件
"log-opts": {"max-size":"500m", "max-file":"3"}
}
之后執(zhí)行命令重啟:
-
systemctl daemon-reload
-
systemctl restart docker
====
寫在最后文章來源:http://www.zghlxwxcb.cn/news/detail-791228.html
如果有好的方案或者執(zhí)行過程中遇到的bug 可底下評(píng)論區(qū)留言文章來源地址http://www.zghlxwxcb.cn/news/detail-791228.html
到了這里,關(guān)于如何清理 docker 磁盤空間 附講解(全)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!