一、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 检索所有连接

Docker 学习笔记(四):问题日志的更多相关文章

  1. Docker学习笔记四:Docker镜像、容器管理工具shipyard

    一.拉取以下几种镜像: docker pull alpineshipyard/shipyarddocker pull swarm docker pull shipyard/shipyarddocker ...

  2. Docker学习笔记四 Docker容器

    本文地址:https://www.cnblogs.com/veinyin/p/10439849.html    容器是独立运行的一个或一组应用及他们的运行态环境,对应虚拟机的操作系统和应用. 启动 可 ...

  3. Docker学习笔记总结

    Docker学习笔记 https://yeasy.gitbooks.io/docker_practice/content/   一 环境搭建 Ubuntu安装 .添加软件源的GPG密钥 curl -f ...

  4. go微服务框架kratos学习笔记四(kratos warden-quickstart warden-direct方式client调用)

    目录 go微服务框架kratos学习笔记四(kratos warden-quickstart warden-direct方式client调用) warden direct demo-server gr ...

  5. Docker学习笔记之-在CentOS中安装Docker

    上一节演示了如何 通过Xshell连接CentOS服务,链接:Docker学习笔记之-通过Xshell连接 CentOS服务 本节将演示 如何在CentOS中安装 Docker 第一步:更新系统包到最 ...

  6. Docker学习笔记之--安装mssql(Sql Server)并使用Navicat连接测试(环境:centos7)

    前一节演示如何使用Nginx反向代理 .net Core项目容器,地址:Docker学习笔记之-部署.Net Core 3.1项目到Docker容器,并使用Nginx反向代理(CentOS7)(二) ...

  7. C#可扩展编程之MEF学习笔记(四):见证奇迹的时刻

    前面三篇讲了MEF的基础和基本到导入导出方法,下面就是见证MEF真正魅力所在的时刻.如果没有看过前面的文章,请到我的博客首页查看. 前面我们都是在一个项目中写了一个类来测试的,但实际开发中,我们往往要 ...

  8. Docker学习笔记 — 配置国内免费registry mirror

    Docker学习笔记 — 配置国内免费registry mirror Docker学习笔记 — 配置国内免费registry mirror

  9. docker学习笔记1 -- 安装和配置

    技术资料 docker中文官网:http://www.docker.org.cn/ 中文入门课程:http://www.docker.org.cn/book/docker.html docker学习笔 ...

  10. IOS学习笔记(四)之UITextField和UITextView控件学习

    IOS学习笔记(四)之UITextField和UITextView控件学习(博客地址:http://blog.csdn.net/developer_jiangqq) Author:hmjiangqq ...

随机推荐

  1. bat和cmd文件是什么,dos又是什么东西

    bat文件是dos下的批处理文件.批处理文件是无格式的文本文件,它包含一条或多条命令.它的文件扩展名为 .bat 或 .cmd.在命令提示下键入批处理文件的名称,或者双击该批处理文件,系统就会调用cm ...

  2. JS Array.apply会有内存泄漏问题

    报错内容: Maximum call stack size exceeded 参考:https://www.jianshu.com/p/b9ba0ddd3392 对象较多,前端JS内存溢出: 数组克隆 ...

  3. Java Web J2EE下的两大框架SSH和SSM对比

    当下流行的两种企业开发MVC开源框架,是我们Java程序猿必备知识能力.MVC,即模型(model)-视图(view)-控制器(controller)的缩写,一种软件设计典范,用一种业务逻辑.数据.界 ...

  4. 将移远通信的EC20驱动移植到NUC972上(转)

    源: 将移远通信的EC20驱动移植到NUC972上

  5. leetcode 576. Out of Boundary Paths 、688. Knight Probability in Chessboard

    576. Out of Boundary Paths 给你一个棋盘,并放一个东西在一个起始位置,上.下.左.右移动,移动n次,一共有多少种可能移出这个棋盘 https://www.cnblogs.co ...

  6. Docs-.NET-C#-指南-语言参考-关键字:C# 关键字

    ylbtech-Docs-.NET-C#-指南-语言参考-关键字:C# 关键字 1.返回顶部 1. C# 关键字 2017/03/07 关键字是预定义的保留标识符,对编译器有特殊意义. 除非前面有 @ ...

  7. 使用.whl文件安装torch和pytorch的方法

    当使用pip install torch torchvision命令下载感觉很慢时 可以先到下面的网页将.whl文件下载下来,然后再运行安装即可: torchvision也是 下载好了以后,运行: p ...

  8. Spring Cloud Hystrix Dashboard的使用 5.1.3

      Hystrix除了可以对不可用的服务进行断路隔离外,还能够对服务进行实时监控.Hystrix可以实时.累加地记录所有关于HystrixCommand的执行信息,包括每秒执行多少.请求成功多少.失败 ...

  9. 复习sql server 2000 MSDE2000 ,安装,打补丁,开1433端口。

    前言: 由于工作需要,一个仍在使用的古董软件需要安装配置. 原有系统是在主机部署,单机安装sql2000,其他机器(分机)也单机部署软件,部署sql2000,通过dtsrun /f sync.dts( ...

  10. 函数返回new对象

    #include <iostream> using namespace std; // foo()函数本质上没什么问题,但建议你不要这样写代码 string &foo() { st ...