zoukankan      html  css  js  c++  java
  • Docker 学习笔记(四):Bug 日志与其他零散知识

    一、Docker-Compose 容器组开机重启失败

    Docker-Compose 的 depends_on 参数在 docker 中没有对应。

    重启电脑后,容器的重启过程只由 docker 控制,而 docker 不会依据 depends_on 的顺序启动容器,这导致容器组可能重启失败。

    目前的解决办法是使用 systemd 或者 supervisor,在开机时运行 docker-compose up 命令。

    二、Docker 空间清理

    在使用固定的构建节点构建 Docker 镜像时,正常情况下会在构建完成后自动清理掉生成的镜像,但是如果构建流程出现问题,就有可能导致镜像没有被清理。

    最方便的方法是在构建完成后,使用命令 docker system prune --all --force 清理掉所有没有被使用的镜像、容器、网络、数据卷,不能在构建完成后直接使用前面的命令清理完全清理,因为这可能会清理掉别的构建任务的中间镜像!!!导致 push 的时候找不到包,或者构建下一步时,发现中间容器被删除了。。

    更好的方法是使用定时任务(crontab 或者 jenkins triggler)在每天晚上没有 docker 构建任务运行时,再跑 docker system prune --all --force

    Docker 容器日志占满存储空间

    部署了 ELK 系统抓 MySQL 数据,结果过了一天,50G 空间就满了,而 ES 本身的数据才 200M 不到。

    使用 du -h <目录> --max_depth 1 逐级排查,发现罪魁祸首是 /var/lib/docker/containers 文件夹。这里面的 <container-id>/<container-id>-json.log (container id 是对应的容器 id)把磁盘用光了。

    Google /var/lib/docker/containers 占用空间 了解到,这些 log 文件就是对应容器的日志,docker logs <container_id> 日志一大堆。

    解决方法

    首先 echo "" > xxx-json.log 临时清理掉这些日志。永久解决办法如下:

    方法一:使用 docker-compose.yml(只针对特定 service)

    version: '2'
    
    services:
    
      elasticsearch:
        ...
        logging:  # 限制容器服务的日志大小,否则 docker logs 会占满磁盘空间
          options:
            max-size: "10m"
            max-file: "1"
        volumes:
          - ./elasticsearch/config/elasticsearch.yml:/usr/share/elasticsearch/config/elasticsearch.yml:ro
        ports:
          - "9200:9200"
          - "9300:9300"
    

    方法二:全局修改

    修改 /etc/docker/daemon.json,添加如下内容:

    {
        ...... // 省略若干配置
      "log-driver":"json-file",
      "log-opts": {"max-size":"10m", "max-file":"3"}
    }
    

    三、查看 DOcker 容器的连接数

    docker inspect -f '{{.State.Pid}}' <containerid>  # 查找到容器的 pid
    sudo nsenter -t <pid> -n netstat | grep ESTABLISHED  # 通过 pid 检索所有连接
    
  • 相关阅读:
    加载效果(遮罩)
    [MVC] 自定义ActionSelector,根据参数选择Action
    【mysql】存储过程无参,传入参数,传出参数,动态sql,游标的简单例子
    【idea】启动报错Failed to create JVM:error code -6
    【idea】【maven】报错Unable to import maven project: See logs for details
    【springcloud】启动web模块报错spring-boot-maven-plugin:2.2.1.RELEASE:run (default-cli) on project da-web
    【mysql】删除服务
    【mysql】安装多个版本
    【mysql】安装报错Install/Remove of the Service Denied!
    【idea】设置console控制台显示内容大小
  • 原文地址:https://www.cnblogs.com/kirito-c/p/11456842.html
Copyright © 2011-2022 走看看