使用Docker容器啟動服務(wù)時,常常會由于容器內(nèi)的日志過多導(dǎo)致把宿主機(jī)的磁盤寫滿松靡。
容器日志目錄
容器日志的位置简僧,磁盤已經(jīng)被容器日志寫滿,則需要找到對應(yīng)的日志并進(jìn)行刪除雕欺。
默認(rèn)情況下岛马,每個容器的日志默認(rèn)都會以json-file的格式存儲于 /var/lib/docker/containers/容器ID/容器ID-json.log文件中棉姐。
如果你的磁盤已經(jīng)被日志打滿,此時可以清除該文件來釋放空間啦逆。需要注意的是谅海,不建議直接使用rm命令刪除日志文件,因?yàn)樵谀承┣闆r下蹦浦,rm命令無法直接釋放磁盤空間扭吁。
一種推薦的刪除方式如下:
echo " " > /var/lib/docker/containers/容器ID/容器ID-json.log
docker配置文件中配置日志信息
上述方法總是治標(biāo)不治本。為了解決該問題盲镶,我們希望能直接限制容器日志的大小侥袜。
限制容器日志的方式分為全局限制和單個容器限制。我們首先來說明如下進(jìn)行全局限制溉贿。
創(chuàng)建/修改/etc/docker/daemon.json該文件枫吧,在該文件中增加如下配置:
{
"log-driver":"json-file",
"log-opts":{ "max-size" :"1g","max-file":"1"}
}
此時,表示全局限制所有容器的默認(rèn)日志配置為json-file格式且最大限制為1G宇色。
docker容器啟動命令中配置日志信息
有時九杂,我們希望僅僅針對單個容器進(jìn)行限制,那么此時方式如下:
在docker run的容器啟動命令中添加如下參數(shù):
--log-opt max-size=1g --log-opt max-file=1
compose文件中配置日志信息
很多時候宣蠕,我們啟動容器不是通過docker run進(jìn)行挨個啟動例隆,而是通過compose進(jìn)行統(tǒng)一的管理。
此時抢蚀,我們同樣可以在compose的配置文件中進(jìn)行容器日志的限制镀层。
一個示例如下:
version: "2"
services:
mysql:
image: mysql
logging:
driver: "json-file"
options:
max-size: "1g"