Docker 日志

日志记录是任何生产应用程序中至关重要的一部分。当出现问题时,日志可以是恢复服务的关键工具,所以它们需要做好。在 Linux 系统上,我们期望通过一些常见方式与应用程序日志交互,有些方式更好。如果您在一台计算机上运行应用程序进程,您可能希望将输出发送到一个您可以查看的本地日志文件中。或者您可能期望输出简单地记录在内核缓冲区中,可以从 dmesg 中读取。或者,在许多现代 Linux 发行版中使用 systemd,您可能希望能够从 journalctl 中获取日志。由于容器的约束以及 Docker 的构造方式,这些方式都至少需要您进行一些配置才能运作。但这没关系,因为 Docker 具有一流的日志记录支持。

Docker 在几个关键方面让日志记录变得更容易。首先,它能捕获其管理的容器中应用程序的所有正常文本输出。容器中发送到 stdout 或 stderr 的任何内容都会被 Docker 守护进程捕获,并流式传输到可配置的日志记录后端。其次,与 Docker 的许多其他部分一样,该系统也是可插拔的,有许多功能强大的插件可供使用。不过,我们先不要深入探讨。

docker 容器日志

我们将从最简单的 Docker 使用场景开始:默认的日志记录机制。 这种机制存在一些限制,我们一会儿会解释的,但对于大多数常见的使用情况来说,它运行良好,并且非常方便。 如果您在开发过程中使用 Docker,那么这可能是您唯一使用的日志记录策略。 这种日志记录方法从一开始就存在,被广泛理解和支持。 机制是 json-file 方法。 docker container logs 命令将大多数方法露给用户。

正如其名所示,当您运行默认的 json 文件日志记录配置时,应用程序的日志会被 Docker 守护进程流式传输到每个容器的 JSON 文件中。这样,我们就可以随时检索任何容器的日志。

我们可以通过启动 nginx 容器来显示一些日志:

docker container run --rm -d --name nginx-test --rm nginx:latest

然后,使用如何命令查看日志:

docker container logs nginx-test

这一点很好,因为 Docker 允许你根据需要从命令行远程获取日志。这对低容量日志记录非常有用。

支持此日志记录的实际文件位于 Docker 服务器本身,默认情况下位于 /var/lib/docker/containers/<container_id>/ 中,其中 <container_id> 由实际容器 ID 代替。如果查看名为 <container_id>-json.log 的文件,你会发现这是一个每行代表一个 JSON 对象的文件。它看起来是这样的

log字段正是有关进程发送到 stdout 的内容;stream字段告诉我们这是 stdout 而不是 stderr,time字段提供了 Docker 守护进程收到日志的准确时间。这是一种不常见的日志格式,但它是结构化的,而不仅仅是原始流,这对以后处理日志很有帮助。

与日志文件一样,你也可以使用 docker container logs -f 实时尾随 Docker 日志:

docker container logs -f nginx-test

这看起来与通常的 docker 容器日志完全相同,但客户端会继续等待并显示从服务器接收到的新消息,就像 Linux 命令行 tail -f 一样。你可以随时输入 Ctrl-C 退出日志流:

要将日志输出限制为较新的日志,可以使用 --since 选项,只显示指定 RFC 3339 日期(如 2002-10-02T10:00:00-05:00)、Unix 时间戳(如 1450071961)、标准时间戳(如 20220731)或 Go 持续时间字符串(如 5m45s)之后的日志。你也可以使用 --tail,并在后面加上你希望尾随的行数。

退出容器

docker container stop nginx-test

对于单主机日志记录而言,这种机制相当不错。它的不足之处在于日志轮换、日志轮换后的远程访问以及大容量日志的磁盘空间占用。尽管该机制是由 JSON 文件支持的,但它的性能足够好,如果这是你的解决方案,大多数生产应用程序都可以采用这种方式记录日志。但如果你的环境比较复杂,你会需要更强大的集中日志记录功能。

注:

dockerd 的默认设置目前还不能启用日志轮转。如果是在生产环境中运行,需要通过命令行或 daemon.json 配置文件指定 --log-opt max-size 和 --log-opt max-file 设置。除非你还设置了 max-size 来告诉 Docker 何时轮换日志,否则 max-file 没有任何作用。启用此选项后,docker 容器日志机制将只返回当前日志文件中的数据。

更高级的日志

在默认机制不够用的时候,尤其是在大规模使用情况下,Docker 也可以通过插件支持可配置的日志后端。这些插件不断增加。目前支持的插件有我们之前描述的 json-file,还有 syslog、fluentd、journald、gelf、awslogs、splunk、gcplogs、local 以及 logentries,用于将日志发送到各种流行的日志框架和服务。

对于大规模运行 Docker 而言,目前最简单的支持选项是从 Docker 直接将容器日志发送到 syslog。你可以在 Docker 命令行中使用 --log-driver=syslog 选项指定这一点,或者在所有容器的 daemon.json 文件中将其设置为默认值。

daemon.json 文件是 dockerd 服务器的配置文件。它通常位于服务器上的 /etc/docker/ 目录中。对于 Docker Desktop,可以在用户界面的 "偏好设置"→"Docker 引擎 "中编辑该文件。如果更改了该文件,就需要重启 Docker Desktop 或 dockerd 守护进程。

关于大多数日志插件,非常重要的一点需要注意:它们默认为阻塞模式,这意味着日志回压可能会给应用程序带来问题。你可以通过设置 --log-opt mode=non-blocking 来改变这种行为,然后将日志的最大缓冲区大小设置为类似 --log-opt max-buffer-size=4m 的大小。设置完成后,当缓冲区满时,应用程序将不再阻塞。相反,内存中最旧的日志会被删除。同样,在此需要权衡可靠性和企业对接收所有日志的需求。

以上步骤,并没有解释每个docker命令的含义,是比较基础的操作,如果您对以上的命令不太熟悉,可以参考我的docekr课程,有对各类命令的详细讲解:Docker 实战_在线视频教程-CSDN程序员研修院

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/748129.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

文华财经盘立方均线-支撑压力自动画线多空声音预警指标公式源码

文华财经盘立方多空均线-支撑压力自动画线指标公式源码&#xff1a; //MA5:MA(C,5); //MA10:MA(C,10); MA20:MA(C,20),COLORRED; MA60:MA(C,60),COLORGREEN; TY:CLOSE; HD:FILTER(BACKSET(FILTER(REF(TY,10)HHV(TY,2*101),10),101),10); LD:FILTER(BACKSET(FILTER(REF(T…

openlayer 图层绘制成多种颜色的一个图层

技术栈&#xff1a; 因为是旧项目的优化功能&#xff0c;这里主要介绍实现思路。技术栈&#xff1a;openlayer 6.5^、jquery、layui组件。 背景&#xff1a; 在创建一个地图对象后&#xff0c;如何创建此处省略。这里主要讲解如何根据接口的数据来把水深测量时间的图层根据不同…

vue2的待办事项案例

头部组件 <template><div class"todo-header"><input type"text" placeholder"请输入你的任务名称&#xff0c;按回车键确认" keyup.enter"add"/></div> </template><script>import {nanoid} fro…

智能语音抽油烟机:置入WTK6900L离线语音识别芯片 掌控厨房新风尚

一、抽油烟机语音识别芯片开发背景 在繁忙的现代生活中&#xff0c;人们对于家居生活的便捷性和舒适性要求越来越高。传统的抽油烟机操作方式往往需要用户手动调节风速、开关等功能&#xff0c;不仅操作繁琐&#xff0c;而且在烹饪过程中容易分散注意力&#xff0c;增加安全隐…

【5G射频基本架构】

平台框架 平台演进及搭配 5G NR频谱 NSA/SA/ENDC

Java登录管理功能的自我理解(尚庭公寓)

登录管理 背景知识 1. 认证方案概述 有两种常见的认证方案&#xff0c;分别是基于Session的认证和基于Token的认证&#xff0c;下面逐一进行介绍 基于Session 基于Session的认证流程如下图所示 该方案的特点 登录用户信息保存在服务端内存&#xff08;Session对象&#xff…

安全技术和防火墙(iptables)

安全技术 入侵检测系统&#xff1a;特点是不阻断网络访问&#xff0c;主要是提供报警和事后监督&#xff0c;不主动介入&#xff0c;类似于监控。 入侵防御系统&#xff1a;透明模式工作&#xff0c;对数据包&#xff0c;网络监控&#xff0c;服务攻击&#xff0c;木马&#…

【数据结构】(C语言):栈

栈&#xff1a; 线性的集合。后进先出&#xff08;LIFO&#xff0c;last in first out&#xff09;。两个指针&#xff1a;指向栈顶和栈底。栈顶指向最后进入且第一个出去的元素。栈底指向第一个进入且最后一个出去的元素。两个操作&#xff1a;入栈&#xff08;往栈尾添加元素…

力扣最新详解5道题:两数之和三数之和四数之和

目录 一、查找总价格为目标值的两个商品 题目 题解 方法一&#xff1a;暴力枚举 方法二&#xff1a;对撞指针 二、两数之和 题目 题解 方法一&#xff1a;暴力枚举 方法二&#xff1a;哈希表法 三、三数之和 题目 题解 方法一&#xff1a;排序暴力枚举set去重 …

C++ | Leetcode C++题解之第200题岛屿数量

题目&#xff1a; 题解&#xff1a; class Solution { private:void dfs(vector<vector<char>>& grid, int r, int c) {int nr grid.size();int nc grid[0].size();grid[r][c] 0;if (r - 1 > 0 && grid[r-1][c] 1) dfs(grid, r - 1, c);if (r …

智能革新:AI写作工具如何重塑论文生成的艺术

在学术探索的征途中&#xff0c;AI论文工具本应是助力前行的风帆&#xff0c;而非让人陷入困境的漩涡。我完全理解大家在面对论文压力的同时&#xff0c;遭遇不靠谱AI工具的沮丧与无奈。毕竟&#xff0c;时间可以被浪费&#xff0c;但金钱和信任却不可轻弃。 作为一名资深的AI…

解锁数据资产的无限潜能:深入探索创新的数据分析技术,挖掘其在实际应用场景中的广阔价值,助力企业发掘数据背后的深层信息,实现业务的持续增长与创新

目录 一、引言 二、创新数据分析技术的发展 1、大数据分析技术 2、人工智能与机器学习 3、可视化分析技术 三、创新数据分析技术在实际应用场景中的价值 1、市场洞察与竞争分析 2、客户细分与个性化营销 3、业务流程优化与风险管理 4、产品创新与研发 四、案例分析 …

Redis 缓存一致性

Redis 业务结构 流程图 缓存一致性 Redis 和 MySQL 中数据保持一致 双检加锁策略 主要用于解决多线程环境下的并发问题&#xff0c;确保在高并发场景下对共享资源的访问是互斥的&#xff0c;避免因竞争条件导致的不一致状态 public User findUserById(Integer id) {User user …

使用新H5标签dialog,实现点击按钮显示分享链接弹出层交互功能

使用新H5标签&#xff0c;实现点击按钮显示分享链接弹出层交互功能 在现代网页开发中&#xff0c;使用新技术和标签来提升用户体验是非常重要的。今天&#xff0c;我们就来聊聊如何利用HTML5的<dialog>标签来实现一个简洁实用的分享链接功能。 在过去&#xff0c;我们通常…

简单的springboot整合activiti5.22.0

简单的springboot整合activiti5.22.0 1. 需求 我们公司原本的流程服务是本地workflow模块以及一个远程的webService对应的activiti服务&#xff0c;其中activiti版本为5.22.0&#xff0c;之前想将activiiti5.22.0进行升级&#xff0c;选择了camunda&#xff0c;也对项目进行了…

《梦醒蝶飞:释放Excel函数与公式的力量》6.1 DATE函数

6.1 DATE函数 第一节&#xff1a;DATE函数 1&#xff09;DATE函数概述 DATE函数是Excel中的一个内置函数&#xff0c;用于根据指定的年、月、日返回对应的日期序列号。这个函数非常有用&#xff0c;尤其是在处理日期数据时&#xff0c;它可以帮助你构建特定的日期&#xff0…

20-OWASP top10--XXS跨站脚本攻击

目录 什么是xxs&#xff1f; XSS漏洞出现的原因 XSS分类 反射型XSS 储存型XSS DOM型 XSS XSS漏洞复现 XSS的危害或能做什么&#xff1f; 劫持用户cookie 钓鱼登录 XSS获取键盘记录 同源策略 &#xff08;1&#xff09;什么是跨域 &#xff08;2&#xff09;同源策略…

文章解读与仿真程序复现思路——电网技术EI\CSCD\北大核心《计及氢储能与需求响应的路域综合能源系统规划方法》

本专栏栏目提供文章与程序复现思路&#xff0c;具体已有的论文与论文源程序可翻阅本博主免费的专栏栏目《论文与完整程序》 论文与完整源程序_电网论文源程序的博客-CSDN博客https://blog.csdn.net/liang674027206/category_12531414.html 电网论文源程序-CSDN博客电网论文源…

在数据库领域是如何实现“多租户”的呢?

数据库多租技术介绍 随着云计算时代的到来&#xff0c;多租户的概念也逐渐广为人知。“多租户”使得租户之间可以共享物理资源&#xff0c;能够帮助用户节约硬件成本和运维成本&#xff0c;提高资源利用效率。同时&#xff0c;在实现的过程中&#xff0c;考虑到共享带来的安全…

【单片机毕业设计选题24031】-基于STM32的智能手环设计

系统功能: 使用12864OLED液晶屏显示当前的步数&#xff0c;温度值&#xff0c;心率和报警值&#xff0c;单位是心率/分钟设置步长&#xff0c;测量里程&#xff1b;可以设置温度心率的上下限报警值&#xff0c;设置、加、减&#xff1b;用红外传感器XL01实现心率的测量&#x…