Docker設(shè)置日志滾動(dòng)的解決方案
問題描述
Docker 容器中的進(jìn)程會(huì)將打印到控制臺(tái)(console)的日志保存到容器的目錄下,默認(rèn)的 Docker 配置不帶有日志的回滾。會(huì)在自己的容器目錄下往同一個(gè)日志文件中不停寫入,最后會(huì)導(dǎo)致磁盤空間占滿的問題。
解決方案
方案一:全局范圍內(nèi)修改(僅對(duì)新容器生效)
修改 docker.service 的配置,改完后 docker run 的新容器都可以應(yīng)用該配置,但舊的 container 不生效。
1.修改Docker 配置
如果該命令不生效請(qǐng)參考 注意事項(xiàng) 2
vim /etc/docker/daemon.json
添加日志配置:
"log-driver": "json-file", "log-opts": { "max-size": "100m", "max-file": "3" }
log-opts的參數(shù)說明:
參數(shù) | 說明 |
---|---|
max-size | 容器日志文件上限大小 |
max-file | 容器日志文件上限個(gè)數(shù) |
2.重啟Docker守護(hù)進(jìn)程使配置生效
systemctl restart docker
3. 查看日志文件是否生效
查看日志所在路徑
docker inspect [容器名]
其中的 LogPath 字典項(xiàng)就是該容器的日志文件。
注意事項(xiàng)
- 上述操作執(zhí)行完后只能影響新 docker run 的容器,舊的容器不生效,若要修改現(xiàn)有容器配置,請(qǐng)查看解決方案2.
- 上述步驟 1 中的 daemon.json 可能不存在,存在另一個(gè) daemon.conf 可以將 daemon.conf 改為 daemon.json ,但是非常不建議?。?!,這樣更改后舊的容器會(huì)不認(rèn)新配置導(dǎo)致舊容器消失,需要通過 docker run 鏡像重新啟動(dòng)新的容器。 如果不小心誤操作更改了,可以將原文件恢復(fù),重啟 docker 守護(hù)進(jìn)程(步驟三),舊的容器會(huì)重新出現(xiàn)。
- Docker 默認(rèn)安裝后沒有
daemon.json
這個(gè)文件,需要手動(dòng)創(chuàng)建,需要Docker 的版本大于 1.12。 建議在安裝完 Docker 后優(yōu)先創(chuàng)建 daemon.json 文件,避免以后更改配置的不便。 - 修改后如果配置沒有生效,請(qǐng)檢查
/lib/systemd/system/docker.service
文件,確認(rèn)ExecStart
字段其后有--config-file=/etc/docker/daemon.json
配置,如果沒有添加上后執(zhí)行systemctl daemon-reload
,然后重啟 docker 服務(wù)systemctl restart docker.service
,重啟后檢查 ps aux | grep dockerd 查看配置有沒有正常配置。
方案二:修改已存在的容器配置
- 查看該容器日志配置文件路徑:
docker inspect [容器名]
- 進(jìn)入容器的日志配置文件目錄:如
cd /var/lib/docker/containers/<容器名>
- 關(guān)閉容器服務(wù):
service docker stop
- 修改
hostconfig.json
配置文件,其LogConfig
中的默認(rèn)為"Config":{}
, 改為為"Config":{"max-file":"3", "max-size": "100m"}
cp hostconfig.json hostconfig.json_bak # 備份配置文件 vim hostconfig.json # 修改 LogConfig 中的 Config
- 重啟docker,
service docker start
.
按以上方法操作后 Docker 容器將會(huì)按照配置的的日志回滾規(guī)則管理日志文件,確保日志文件不會(huì)無限增長(zhǎng),也能夠方便地查看日志文件。
到此這篇關(guān)于Docker設(shè)置日志滾動(dòng)的文章就介紹到這了,更多相關(guān)Docker日志滾動(dòng)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
docker之如何設(shè)置日志文件大小及個(gè)數(shù)
這篇文章主要介紹了docker之如何設(shè)置日志文件大小及個(gè)數(shù)問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-05-05Docker 解決獲取容器獲取的時(shí)間不是本地時(shí)間的問題
這篇文章主要介紹了Docker 解決獲取容器獲取的時(shí)間不是本地時(shí)間的問題的相關(guān)資料,需要的朋友可以參考下2016-11-11Docker-Compose搭建Spark集群的實(shí)現(xiàn)方法
本文主要介紹了Docker-Compose搭建Spark集群的實(shí)現(xiàn)方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-05-05Docker鏡像構(gòu)建之docker commit的使用
本文主要介紹了Docker鏡像構(gòu)建之docker commit的使用,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2022-04-04docker安裝nacos并配置數(shù)據(jù)庫(kù)的全過程
這篇文章主要給大家介紹了關(guān)于docker安裝nacos并配置數(shù)據(jù)庫(kù)的相關(guān)資料, Nacos是SpringCloudAlibaba架構(gòu)中最重要的組件,Nacos 是一個(gè)更易于幫助構(gòu)建云原生應(yīng)用的動(dòng)態(tài)服務(wù)發(fā)現(xiàn)、配置和服務(wù)管理平臺(tái),文中介紹的非常信息,需要的朋友可以參考下2023-09-09Windows/Mac系統(tǒng)Docker方式安裝Mysql(包含utf8)
本文主要介紹了Windows/Mac系統(tǒng)Docker方式安裝Mysql(包含utf8),文中通過示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-11-11