Docker緩存占有太大的磁盤(pán)空間

Docker在不重建容器的情況下,日志文件默認(rèn)會(huì)一直追加,時(shí)間一長(zhǎng)會(huì)逐漸占滿服務(wù)器的硬盤(pán)的空間,內(nèi)存消耗也會(huì)一直增加。

查出占用磁盤(pán)較大的文件

Docker 的日志文件存在 /var/lib/docker/containers 目錄中,通過(guò)下面的命令可以將日志文件夾根據(jù)升序的方式羅列出來(lái)。

sudo du -d1 -h /var/lib/docker/containers | sort -h
40K   /var/lib/docker/containers/7bbec35275e8f63784107d486c9c40cb62902afd6815c569b36947f0b0ed6405
40K   /var/lib/docker/containers/7df78d67728173c13b4a238518b79d4b4a384d38026102a61aef290e53f2f1a6
32G   /var/lib/docker/containers/c28a096b0594349c7b6cbf9d9931e652ac9f72a0d2c033a2fcb022c154aaf4e6
32G   /var/lib/docker/containers

清理單個(gè)文件

感覺(jué)哪個(gè)容器的日志太大就清理哪個(gè)

sudo sh -c "cat /dev/null > ${log_file}"

${log_file} 就是日志文件

可以通過(guò)find命令查找全部日志

sudo find /var/lib/docker/containers -name *.log

控制容器日志大小

以上只是臨時(shí)解決的方式,最好是創(chuàng)建容器時(shí)就控制日志的大小。

運(yùn)行時(shí)控制

啟動(dòng)容器時(shí),我們可以通過(guò)參數(shù)來(lái)控制日志的文件個(gè)數(shù)和單個(gè)文件的大小

# max-size 最大數(shù)值``# max-file 最大日志數(shù)``$ docker run -it --log-opt max-size=10m --log-opt max-file=3 redis

一兩個(gè)容器還好,但是如果有很多容器需要管理,這樣就很不方便了,最好還是可以統(tǒng)一管理。

全局配置

創(chuàng)建或修改文件 /etc/docker/daemon.json,并增加以下配置

{
    "log-driver":"json-file",
    "log-opts":{
        "max-size" :"50m","max-file":"3"
    }
}

max-size=50m,意味著一個(gè)容器日志大小上限是50M,
max-file=3,意味著一個(gè)容器有三個(gè)日志,分別是id+.json、id+1.json、id+2.json。可以存在的最大日志文件數(shù)。如果超過(guò)最大值,則會(huì)刪除最舊的文件。**僅在max-size設(shè)置時(shí)有效。默認(rèn)為5。

隨后重啟 Docker 服務(wù)

sudo systemctl daemon-reload``sudo systemctl restart docker

不過(guò)已存在的容器不會(huì)生效,需要重建才可以

刪除最大日志文件后 磁盤(pán)空間沒(méi)有釋放。顯示磁盤(pán)空間還是很小

通過(guò)停止容器 重新啟動(dòng)容器命令 來(lái)釋放磁盤(pán)空間

 #停止容器
 docker stop 200cfb7a8db4
 #啟動(dòng)容器
 docker start 200cfb7a8db4

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容