一、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. qt 单例程序

    1.http://qt.nokia.com的网站把QtSingleApplication 的源代码qtsingleapplication-2.6_1-opensource.zip 下载下来,然后解压缩 ...

  2. 分析imx8mm-evk评估板的pinctrl设备树

    1. 分析arch/arm64/boot/dts/freescale/imx8mm-evk.dts中的i2c3相关的pinctrl_i2c3节点 pinctrl_i2c3: i2c3grp { fsl ...

  3. mailgun php 邮件发送 实例

    步骤如下: 通过 composer 获取代码库 获取 API Key 以及 domain 编写代码发送邮件 1. 首先通过 composer 获取依赖代码库,参考官网给的命令 https://docu ...

  4. PHP 二维数组去重(保留各个键值的同时去除重复的项)

    对于如下二维数组,要求对其进行去重: $arr = array( '=>array( 'name'=>'james', , ), '=>array( 'name'=>'susu ...

  5. vue---lodash的使用

    Lodash就是这样的一套工具库,它内部封装了诸多对字符串.数组.对象等常见数据类型的处理函数,其中部分是目前ECMAScript尚未制订的规范,但同时被业界所认可的辅助函数.莫倩每天使用npm安装L ...

  6. 时序数据库技术体系 – 初识InfluxDB(原理)

    原贴地址:http://hbasefly.com/2017/12/08/influxdb-1/?qytefg=c4ft23 在上篇文章<时序数据库体系技术 – 时序数据存储模型设计>中笔者 ...

  7. Egret中的对象池Pool

    为了可以让对象复用,防止大量重复创建对象,导致资源浪费,使用对象池来管理. 一 对象池A 二 对象池B 一 对象池A 1. 支持传入构造函数 2. 支持预先创建对象 3. 支持统一执行函数 /** * ...

  8. VS2010/VS2012/VS2015下openGL环境配置(转)

    按:按照下述博文,三个例子均成功. https://blog.csdn.net/so_geili/article/details/51685005 请仔细阅读每一个字. 为了学习<OpenGL超 ...

  9. 【k8s label】对node添加删除label,并根据label筛选节点

    添加 kubectl label nodes kube-node label_name=label_value kubectl label nodes 1.1.1.1 label_name=label ...

  10. C++高精度整数加减乘除模板

    其中高精度乘法通过了POJ2389,其他没有测过,不过应该是没有问题的. 其中高精度除法返回一对string,分别表示商和余数. 代码: #include <bits/stdc++.h> ...