限制&&清除容器日志

设置Docker容器日志文件大小限制

1.新建/etc/docker/daemon.json,若有就不用新建了。添加log-dirver和log-opts参数,样例如下:

# vim /etc/docker/daemon.json

{
  "registry-mirrors": [
    "<https://sucejt9z.mirror.aliyuncs.com>"
  ],
  "log-driver":"json-file",
  "log-opts": {"max-size":"200m", "max-file":"3"}
}
{
  "log-driver":"json-file",
  "log-opts": {"max-size":"200m", "max-file":"3"}
}

max-size=200m,意味着一个容器日志大小上限是200M, 
max-file=3,意味着一个容器有三个日志,分别是id+.json、id+1.json、id+2.json。



2.然后重启docker的守护线程

命令如下:

sudo systemctl daemon-reload
sudo systemctl restart docker


【需要注意的是:设置的日志大小规则,只对新建的容器有效】

Container Log 預設路徑如下:

*/var/lib/docker/containers/<container-id>/**<container-id>*json.log

可以利用下列指令進行清除。

cat /dev/null > <container-id>-json.log

設定 Log 文件容量上限

每次都手動清除是件很蠢的事,可以將設定檔放置於 etc/docker/daemon.json,若無此文件,則需額外新增,設定值可參考下列內容:

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

接著利用下列指令重新載入,之後建立新的 Container 就會套用了。

systemctl daemon-reload

systemctl restart docker

清理 Log Script

如果想使用排程進行 Log 的清理,可將下列 Script 存成 sh 檔後執行。

path=/var/lib/docker/containers/
echo ""
echo "========== Clean Docker Containers Log =========="
echo "Path: "$path
cd $path
for file in $(ls)
do
    if [ -d $file ];then
        echo $file"-json.log"
        cat /dev/null > $file/$file-json.log
      else
        echo 0
    fi
done
echo "========== Clean Docker Containers Log =========="
echo ""

最后更新于