zoukankan      html  css  js  c++  java
  • docker 限制日志文件大小和数量

    最近使用docker 发现一个可怕的问题,那就是创建容器后,会把磁盘空间占满,太可恶了。

    经过查阅网站,发现这个问题是可以避免的。

    可怕的路径:/var/lib/docker/containers

    原理:

    docker 创建容器默认是生成一串数字,系统会为这串数字创建一个目录。里面有*json.log 日志文件,记录容器的日志。

    如果不修改docker 日志配置文件,默认生成一个日志,这里举例改为100M ,保留三个文件。

    首先生成一个*json.log 文件,日志大小到100M 后,系统会自动把 *json.log 文件,写入 *json.log.1里面

    等到*json.log 文件 再次到 100M后,系统会自动把 *json.log 文件,写入 *json.log.1里面,而*json.log.1 文件写入 *json.log.2 里面。

    依次类推

    我这里有过测试,把其中一个 *json.log.2  文件删除,过一会会生成  *json.log.2  文件,如果只保留 *json.log.2  文件,把 *json.log.1 日志文件删除,系统会吧 *json.log.1 日志文件内容写入 *json.log.2 里面。

    一、修改docker 日志的配置文件

      我这里修改的,日志大小100M,保留三个文件

    vi /etc/docker/daemon.json
    {"registry-mirrors": ["https://registry.docker-cn.com"],
    "log-driver":"json-file",
    "log-opts": {"max-size":"100m", "max-file":"3"}
    }

    二、重启dokcer 

    systemctl restart docker

    三、创建容器

    我这里使用的tomcat镜像,如果没有镜像可以自己拉取镜像

    docker pull tomcat

    docker run --name webtomcat -d -p 8081:8080  -d centos-jdk-tomcat:v20200121

    创建容器后会生成一串数字,docker 会已这个数字创建一个容器的目录

    /var/lib/docker/containers/5c0c836b5aaf2088e04d4df1ed9cc3aa770f300ca097b9a8c70416983ed31bd8

    四、观察日志大小情况

    cd /var/lib/docker/containers/5c0c836b5aaf2088e04d4df1ed9cc3aa770f300ca097b9a8c70416983ed31bd8

    发现日志文件已经生成两个文件了,再等等看是否还生成一个文件。

     最后发现,又生成了一个文件

     4.1、观察日志是否是循环写入

    我这里在*.1 日志文件最后写  1111

    我这里在*.2 日志文件最后写  2222

     

     4.2、观察日志文件是否有变化

    需要登录*.log 这个文件变为100M后,发现变小了,发现他的日志写入到了 *.1里面,而*.1的日志写入到了 *.2里面

     

    五、这里遇到的问题

    如果修改docker日志配置文件,重启docker ,原来的容器不会生产三个文件,不生效,需要重新创建容器

  • 相关阅读:
    MySQL中的InnoDB中产生的死锁深究
    MySQL中的触发器应用
    你除了在客户端上会使用Cookie,还能使用哪些可以作为数据缓存呢?
    js中实现输入框类似百度搜索的智能提示效果
    linux系统中启动mysql方式已经客户端如和连接mysql服务器
    linux系统安装mysql数据库
    Linux中实用的命令
    Linux下安装jdk中遇到的坑
    Git初始化配置以及配置github
    springboot中配置文件使用2
  • 原文地址:https://www.cnblogs.com/pythonx/p/12320959.html
Copyright © 2011-2022 走看看