一文教你徹底解決Docker日志膨脹
最近,我發(fā)現(xiàn)一臺(tái)服務(wù)器的磁盤(pán)空間即將耗盡。經(jīng)過(guò)排查,發(fā)現(xiàn)某個(gè) Docker 容器在一年內(nèi)生成了14 GB 的日志文件。為避免類(lèi)似問(wèn)題,本文將指導(dǎo)你如何快速檢查、清理 Docker 日志,并設(shè)置日志大小限制以防止未來(lái)日志失控。
重啟容器(如服務(wù)器重啟或手動(dòng)執(zhí)行 systemctl restart docker
)不會(huì)清除日志,日志文件會(huì)持續(xù)累積。
重建容器(刪除并重新創(chuàng)建容器)才會(huì)重置日志。
檢查 Docker 日志大小
默認(rèn)日志路徑:
/var/lib/docker/containers/<容器ID>/<容器ID>-json.log
使用以下命令按大小排序查看所有日志文件:
find /var/lib/docker/containers/ -name "*-json.log" | xargs du -h | sort -hr
示例輸出:
5.9G /var/lib/docker/containers/d2e92.../d2e92...-json.log
4.9G /var/lib/docker/containers/ec7a4.../ec7a4...-json.log
根據(jù)容器 ID 查找容器名稱
使用docker inspect
命令:
docker inspect --format='{{.Name}}' <容器ID>
示例輸出:
/php-fpm-valente
(注意:輸出結(jié)果會(huì)以斜杠開(kāi)頭,實(shí)際容器名為php-fpm-valente
)
清理 Docker 日志
清理單個(gè)日志文件:``` truncate -s 0 /var/lib/docker/containers/<容器ID>/<容器ID>-json.log
清理所有日志文件(謹(jǐn)慎使用):``` truncate -s 0 /var/lib/docker/containers//-json.log
設(shè)置日志大小限制
1.編輯 Docker 守護(hù)進(jìn)程配置文件/etc/docker/daemon.json
(若不存在則新建):
sudo nano /etc/docker/daemon.json
2.添加以下內(nèi)容(限制單個(gè)日志文件為 10MB,保留最多 3 個(gè)歸檔文件):
{ "log-driver": "json-file", "log-opts": { "max-size": "10m", "max-file": "3" } }
3.重啟 Docker 服務(wù)以生效:
sudo systemctl restart docker
**注意**:此配置僅對(duì)新創(chuàng)建的容器生效...
驗(yàn)證配置
使用以下命令檢查容器的日志配置:
docker inspect <容器名稱> | grep -A 4 LogConfig
示例輸出:
"LogConfig": {
"Type": "json-file",
"Config": {
"max-file": "3",
"max-size": "10m"
}
}
總結(jié)
- 定期檢查日志大小,避免磁盤(pán)空間耗盡。
- 通過(guò)
daemon.json
配置日志輪轉(zhuǎn),限制日志文件大小。 - 清理日志時(shí)優(yōu)先使用
truncate
,避免直接刪除文件導(dǎo)致容器異常。
遵循以上實(shí)踐,可有效管理 Docker 日志,提升服務(wù)器資源利用率和穩(wěn)定性。
到此這篇關(guān)于一文教你徹底解決Docker日志膨脹的文章就介紹到這了,更多相關(guān)Docker解決日志膨脹內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
詳解使用Dockerfile創(chuàng)建帶Apache服務(wù)的CentOS Docker鏡像
本篇文章主要介紹了使用Dockerfile創(chuàng)建帶Apache服務(wù)的CentOS Docker鏡像,具有一定的參考價(jià)值,有興趣的可以了解一下。2016-12-12Docker?下MySQL數(shù)據(jù)庫(kù)的備份和恢復(fù)的操作方法
這篇文章主要介紹了Docker?下MySQL數(shù)據(jù)庫(kù)的備份和恢復(fù)操作方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-02-02Docker 部署 Prometheus的安裝詳細(xì)教程
這篇文章主要介紹了Docker 部署 Prometheus及安裝方法,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2021-08-08詳解docker nginx 容器啟動(dòng)掛載到本地
這篇文章主要介紹了詳解docker nginx 容器啟動(dòng)掛載到本地,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-07-07利用docker-compsoe部署前后端分離的項(xiàng)目方法
這篇文章主要介紹了利用docker-compsoe部署前后端分離的項(xiàng)目方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2019-08-08使用Docker部署Nacos并配置MySQL數(shù)據(jù)源的詳細(xì)步驟
Nacos是阿里巴巴開(kāi)源的服務(wù)發(fā)現(xiàn)、配置管理和服務(wù)管理平臺(tái),它提供了注冊(cè)中心和配置中心的功能,能夠輕松地管理微服務(wù)的注冊(cè)與發(fā)現(xiàn),以及動(dòng)態(tài)配置的管理,這篇文章主要給大家介紹了關(guān)于使用Docker部署Nacos并配置MySQL數(shù)據(jù)源的超詳細(xì)步驟,需要的朋友可以參考下2024-05-05docker-swarm之使用Docker secret管理敏感數(shù)據(jù)
就Docker Swarm集群服務(wù)而言,secret 是塊狀數(shù)據(jù),例如密碼、SSH私鑰、SSL證書(shū)或其他不應(yīng)通過(guò)網(wǎng)絡(luò)傳輸或未加密存儲(chǔ)在Dockerfile或應(yīng)用程序源代碼中的數(shù)據(jù),我們可以使用Docker secret 集中管理這些數(shù)據(jù),所以接下來(lái)就帶大家了解一下如何使用Docker secret 管理敏感數(shù)據(jù)2023-08-08