Docker 学习笔记(四):问题日志

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

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

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

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

二、Docker 空间清理

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

最方便的方法是在构建完成后,使用下面的命令清理掉所有没有被使用的镜像、容器、网络、数据卷:

 docker system prune -a

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: "80m"
        max-file: "3"
    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":"500m", "max-file":"3"}
}

猜你喜欢

转载自www.cnblogs.com/kirito-c/p/11456842.html