首页 > 编程语言 >docker 日志驱动程序

docker 日志驱动程序

时间:2024-04-26 09:55:22浏览次数:27  
标签:opt log -- max file docker 日志 驱动程序

logging driver 说明

Docker中的日志驱动程序(logging driver)用于控制容器的日志记录方式,允许您将容器中生成的日志发送到不同的目标,如标准输出、文件、远程日志服务器等。

logging driver 类型

none:	    容器没有可用的日志,并且docker logs不返回任何输出。
local:	    日志以旨在最小化开销的自定义格式存储。
json-file:	日志格式为 JSON。Docker 的默认日志记录驱动程序。随着时间的推移,这些日志文件的大小会不断扩大,从而导致磁盘资源可能耗尽。
syslog:	    将日志消息写入syslog守护程序。该syslog守护进程必须在主机上运行。
journald:	将日志消息写入journald守护程序. 该journald守护进程必须在主机上运行。
gelf:	    将日志消息写入 Graylog 扩展日志格式 (GELF) 端点,例如 Graylog 或 Logstash。
fluentd:	将日志消息写入fluentd守护程序。该fluentd守护进程必须在主机上运行。
awslogs:	将日志消息写入 Amazon CloudWatch Logs。
splunk:	    将日志消息写入 Splunk Enterprise 和 Splunk Cloud 中的 HTTP 事件收集器。
etwlogs:	将日志消息写入 Windows 事件跟踪 (ETW) 事件。仅适用于 Windows 平台。
gcplogs:	将日志消息写入 Google Cloud Platform (GCP) 日志记录。

container logs

默认情况下,"docker logs"或"docker service logs"会显示命令的输出,就像在终端中交互式运行命令时一样。Unix 和 Linux 命令通常在运行时会打开三个 I/O 流,称为 STDIN、STDOUT 和 STDERR。 STDIN 是命令的输入流,可能包括来自键盘或其他命令的输入。STDOUT 通常是命令的正常输出,而 STDERR 通常用于输出错误消息。默认情况下,“docker logs”显示命令的 STDOUT 和 STDERR。

JSON File logging driver

json-file 说明

日志格式为 JSON。Docker 的默认日志记录驱动程序。随着时间的推移,这些日志文件的大小会不断扩大,从而导致磁盘资源可能耗尽。为了避免日志数据过度使用磁盘的问题,需要配置日志轮换功能。
json-file 日志驱动程序使用基于文件的存储。这些文件设计为仅由 Docker 守护程序访问。使用外部工具与这些文件交互可能会干扰 Docker 的日志系统并导致意外行为,因此应该避免这样做。

json-file 常用选项

max-size: 日志在滚动之前的最大大小。一个正整数加上表示单位的修饰符(k、m 或 g)。默认值为 -1(无限制)。--log-opt max-size=10m
max-file: 可以存在的最大日志文件数。如果滚动日志会创建过多的文件,则将删除最旧的文件。只在设置了 max-size 时有效。一个正整数。默认为 1。--log-opt max-file=3
labels: 在启动 Docker 守护程序时应用。一个逗号分隔的与日志相关的标签列表,该守护程序接受这些标签。--log-opt labels=production_status,geo
labels-regex: 与标签类似且兼容。一个正则表达式,用于匹配与日志相关的标签。--log-opt labels-regex=^(production_status|geo)
env: 在启动 Docker 守护程序时应用。一个逗号分隔的与日志相关的环境变量列表,该守护程序接受这些环境变量。--log-opt env=os,customer
env-regex:与 env 相似并兼容。一个正则表达式,用于匹配与日志相关的环境变量。--log-opt env-regex=^(os|customer)
compress:启用已轮换日志的压缩。默认情况下为 disabled。--log-opt compress=true

json-file 配置方式

可以通过在Docker守护程序启动时的--log-driver=json-file参数或在容器运行时的--log-driver=json-file参数来指定使用JSON File日志驱动程序。

daemon.json

{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}

命令行

# docker run  --log-driver json-file --log-opt max-size=10m alpine echo hello world

json-file 日志输出位置

JSON File日志驱动程序将容器的标准输出和标准错误输出写入JSON格式的文件中,默认情况下保存在容器的/var/lib/docker/containers/<container-id>/<container-id>-json.log文件中。

json-file 示例

docker run -it --log-opt max-size=10m --log-opt max-file=3 alpine ash

Local file logging driver

Local file 说明

local日志驱动程序捕获容器的stdout/stderr输出,将其写入一个为性能和磁盘使用进行了优化的内部存储。
默认情况下,本地驱动程序为每个容器保留100MB的日志消息,并使用自动压缩来减小磁盘上的大小。默认值100MB是基于每个文件的默认大小为20M以及默认文件数为5(用于日志轮换)的考虑。
本地日志驱动程序使用基于文件的存储。这些文件设计为仅由 Docker 守护程序访问。使用外部工具与这些文件交互可能会干扰 Docker 的日志系统并导致意外行为,因此应该避免这样做。

Local file 常用选项

max-size:日志在滚动之前的最大大小。一个正整数加上表示单位的修饰符(k、m 或 g)。默认为 20m。--log-opt max-size=10m
max-file:可以存在的最大日志文件数目。如果滚动日志创建了过多的文件,将删除最旧的文件。正整数。默认为 5。--log-opt max-file=3
compress:启用已轮换日志文件的压缩。默认情况下为启用状态。--log-opt compress=false

Local file 配置方式

daemon.json

{
  "log-driver": "local",
  "log-opts": {
    "max-size": "10m"
  }
}

命令行

docker run \
      --log-driver local --log-opt max-size=10m \
      alpine echo hello world

Local file 示例

# docker run -it --log-driver local --log-opt max-size=10m --log-opt max-file=3 alpine ash

参考文档

https://docs.docker.com/config/containers/logging/configure/

标签:opt,log,--,max,file,docker,日志,驱动程序
From: https://www.cnblogs.com/wangguishe/p/18154556

相关文章

  • Docker - 基本概念、与虚拟机的区别、架构、镜像操作、容器操作、数据卷挂载
    Docker-基本概念、与虚拟机的区别、架构、镜像操作、容器操作、数据卷挂载 一、对Docker 的理解1、Docker基本概念我们平时开发大型项目组件较多,依赖关系复杂,环境差异大,通过Docker就可解决上述问题~ Docker就是一个快速交付应用、运行应用的技术:运行前后:......
  • 什么是 Docker?Docker详解,7分钟学会
    Docker容器是一种打包格式,可通过标准格式打包应用的所有代码和依赖关系,确保应用能够快速、可靠地在计算环境下运行。Docker容器是一种广受欢迎的轻量级、可执行的独立容器,其中包含应用运行所需的一切要素,包括库、系统工具、代码和运行时。此外,Docker还是一个软件平台,支持开发人......
  • led驱动程序改造-基于设备树的总线驱动模型
    上一篇文章中,介绍了总线设备驱动模型,并基于总线设备驱动模型改造了led驱动程序。考虑到每一个单板所用的资源可能有所不同,以led为例,使用同一芯片的每个单板,如果每一个单板对应的led引脚不同导致需要分别定义一个对应的资源文件来描述这个引脚,并且该文件会被编译进内核,进而导致内核......
  • 使用docker部署livox_camera_calib环境
    ROS系统安装使用fishros的一键安装脚本,选择ros1的kinetic版本。具体安装以及连接容器过程可查看视频Docker版ROS安装。注意:启动容器时应从命令行启动,不要在vscode中连接容器。否则在启动rviz时,程序会找不到显示输出设备,rviz会直接die。环境配置安装完Docker版本ROS后需要的再......
  • 【Docker系列】Section 2: Creating Kubernetes Development Clusters, Understandi
    继续上文,【Docker系列】Section2:CreatingKubernetesDevelopmentClusters,Understandingobjects,andExposingServices①引言:在Section2中,我们将转移到Kubernetes集群和对象。本节的第一章将解释如何使用一个流行的工具来创建库集群,称为KinD。我们将解释如何创......
  • Linux文件系统与日志分析
    目录1.inode与block(1)inode的内容(2)inode的号码(3)inode的大小(4)inode的特殊作用2.硬链接与软连接3.恢复误删的文件(1)恢复EXT类型的文件(2)恢复XFS类型的文件4.分析日志文件(1)日志文件(1)日志的功能:(2)日志文件的分类:(3)日志保存位置(2)内核及系统日志(2)日志消息的级别(3)日志记录的一般格式(3)用户日志......
  • docker.from_env() 获取docker守护进程时出现 TypeError: load_config() got an unexp
    某天使用python重启docker容器时,出现了一个令人费解的BUG,我的代码为1defrestart_docker(container_name):2#连接到docker守护进程3client=docker.from_env()4try:5#获取容器对象6container=client.containers.get(containe......
  • springboot的日志swagger的配置
    我们导入swagger分为三步一.导入依赖首先我们需要在项目的pom里导入依赖<dependency><groupId>com.github.xiaoymin</groupId><artifactId>knife4j-spring-boot-starter</artifactId><version>3.0......
  • C语言环境下的日志库:zlog
    一、安装zloghomepage:zloggithub链接编译和安装链接二、配置文件编程时,在zlog_init()函数需要指定配置文件,而配置文件可以根据用户的需求进行个性化定制。2.1基本配置example_zlog.conf[global]strictinit=truebuffermin=1024buffermax=2048rotate......
  • windows xshell登录docker
    xshell远程连接dokcerhttps://blog.csdn.net/RamaYu/article/details/123065667ubuntu重启sshdservicesshrestartdockerrun-itd--nameubuntu--privilegedf9a80a55f492dockercommit-a"ubuntu"-m"ubuntu"724cfcd55f8dubuntu:18.04docker......