跳到主要内容

检索指定容器的日志

podman logs 命令用法

podman logs 命令的基本语法如下:

podman logs [OPTIONS] CONTAINER

其中,CONTAINER 是你想要查看日志的容器的名称或ID。[OPTIONS] 是一系列可选参数,用于定制日志的输出。

描述

podman logs 命令批量检索一个或多个容器在执行时的所有日志。 这并不保证与 podman run 命令组合使用时的执行顺序(即,在执行 podman logs 时,podman run 可能还没有生成任何日志)。

选项

  1. --color
  • 描述:在输出中启用颜色编码。这通常用于区分不同的日志级别或来源,使输出更易于阅读。
  • 示例:使用颜色输出容器日志,可以更清晰地看到警告、错误等信息。
  1. --follow-f
  • 描述:实时跟踪日志输出。当容器仍在运行时,这个选项将保持命令运行,并显示容器产生的新的日志条目。
  • 示例:当你想要持续监视容器的实时日志时,这个选项非常有用。
  1. --latest
  • 描述:如果指定了多个容器,则仅显示最新的容器的日志。
  • 示例:如果你有多个容器并且想要查看最近启动的那个容器的日志,这个选项会很有用。
  1. --names
  • 描述:在输出中显示容器的名称,而不是容器的ID。这可以使日志输出更易于阅读和理解。
  • 示例:当你有多个容器并且想要通过它们的名称来区分它们的日志时,这个选项很有用。
  1. --since
  • 描述:显示自指定时间戳或相对时间(如“42m”表示42分钟前)以来的日志。
  • 示例:如果你只想查看过去一小时内的日志,你可以使用这个选项来过滤输出。
  1. --tail
  • 描述:显示日志文件的最后几行。例如,--tail=10 将只显示最后10行日志。
  • 示例:当你只关心最近的日志条目时,这个选项很有用。
  1. --timestamps-t
  • 描述:在日志输出中包含时间戳。这有助于确定每个日志条目的产生时间。
  • 示例:如果你想要了解日志条目的确切时间,这个选项将非常有用。
  1. --until
  • 描述:显示直到指定时间戳或相对时间之前的日志。与 --since 相对,但方向相反。
  • 示例:如果你想要查看从某个时间点开始到另一个时间点结束的日志,你可以结合使用 --since--until 选项。

这些选项为 podman logs 命令提供了丰富的功能,使你能够根据需要定制日志的输出和显示方式。

示例

查看容器的日志:

podman logs -t b3f2436bdb978c1d33b1387afb5d7ba7e3243ed2ce908db431ac0069da86cb45

2017/08/07 10:16:21 查找 /var/log/crio/pods/eb296bd56fab164d4d3cc46e5776b54414af3bf543d138746b25832c816b933b/c49f49788da14f776b7aa93fb97a2a71f9912f4e5a3e30397fca7dfe0ee0367b.log - &{Offset:0 Whence:0}
1:C 07 Aug 14:10:09.055 # oO0OoO0OoO0Oo Redis 开始启动 oO0OoO0OoO0Oo
1:C 07 Aug 14:10:09.055 # Redis 版本=4.0.1, 位=64, 提交=00000000, 修改=0, 进程ID=1, 刚刚启动
1:C 07 Aug 14:10:09.055 # 警告:未指定配置文件,正在使用默认配置。要指定配置文件,请使用 redis-server /path/to/redis.conf
1:M 07 Aug 14:10:09.055 # 你请求的最大客户端数为 10000,至少需要 10032 个最大文件描述符。
1:M 07 Aug 14:10:09.055 # 服务器无法将最大打开文件数设置为 10032,因为操作系统错误:操作不允许。
1:M 07 Aug 14:10:09.055 # 当前最大打开文件数为 4096。已将 maxclients 减少到 4064 以补偿较低的 ulimit。如果需要更高的 maxclients,请增加 'ulimit -n'。
1:M 07 Aug 14:10:09.056 * 运行模式=独立,端口=6379
1:M 07 Aug 14:10:09.056 # 警告:TCP 后备队列设置 511 无法强制执行,因为 /proc/sys/net/core/somaxconn 设置为较低的值 128。
1:M 07 Aug 14:10:09.056 # 服务器已初始化

只查看容器日志的最后两行:

podman logs --tail=2 b3f2436bdb978c1d33b1387afb5d7ba7e3243ed2ce908db431ac0069da86cb45

使用 --tail 选项,你可以指定要显示的日志行数。在这个例子中,--tail=2 将仅显示该容器的最后两行日志。如果你省略了容器ID,并且只有一个容器正在运行,那么它将默认显示该容器的日志。如果有多个容器匹配提供的名称或ID模式,你需要指定更具体的标识来避免混淆。

以下是对您之前内容的修正和补充:

查看容器的最后两行日志

podman logs --tail 2 b3f2436bdb97

这个命令正确地使用了 --tail 选项来显示容器 b3f2436bdb97 的最后两行日志。

查看特定容器的所有日志

如果您想要查看名为 myserver 的容器的所有日志,您应该使用类似于以下的命令:

podman logs myserver

这里的 myserver 应该是容器的名称或ID。如果您加上 -t 选项,每条日志前面都会有时间戳。如果您还想从容器创建开始查看所有日志(即使容器之前重启过),您可能需要结合使用 --latest--since 选项。

查看容器自某个时间以来的日志

podman logs -t --since "2017-08-07T10:10:09.055837383-04:00" myserver

使用 --since 选项并指定一个完整的时间戳(用引号括起来以避免解析错误),这个命令将显示从指定时间开始的 myserver 容器的日志。

查看容器在过去10分钟内生成的日志

podman logs --since 10m myserver

这个命令将显示 myserver 容器在过去10分钟内生成的日志。如果容器在这段时间内没有运行,则不会显示任何日志。

注意事项

  • 确保您提供的容器名称或ID是正确的。
  • 如果容器没有运行过或没有日志可查看,podman logs 命令将不会返回任何输出。
  • 在使用时间戳时,确保格式正确,并且您的系统时区设置正确,以避免时间相关的错误。
  • 不同的选项可以组合使用,以满足您查看日志的具体需求。例如,您可以同时使用 -t--since 选项来查看带时间戳的特定时间范围内的日志。

希望这些修正和补充能够帮助您更好地理解和使用 podman logs 命令。

要查看容器直到30分钟前的日志,您可以使用以下命令:

podman logs --until 30m myserver

此命令将显示名为 myserver 的容器在30分钟之前的日志。--until 选项允许您指定一个时间点,而 30m 表示30分钟前。

日志输出包含了几条Apache HTTP服务器的消息。这些消息指出,服务器无法可靠地确定其完全限定的域名(FQDN),因此它使用IP地址 10.0.2.100。为了抑制这些消息,您需要在全局范围内设置 ServerName 指令。接下来的两条消息表明Apache服务器已经配置完成并恢复了正常操作,并显示了启动服务器的命令行参数。

参见

podman(1)是一个无守护进程的容器引擎,用于在Linux系统上开发、管理和运行OCI容器。

podman-run(1)是Podman的一个子命令,用于启动新的容器实例,它允许用户定义容器的配置和运行参数。

podman-rm(1)同样是Podman的一个子命令,用于删除一个或多个已经停止的容器实例,释放系统资源。

历史

2018年2月,由 Brent Baude 更新

2017年8月,最初由 Ryan Cole 整理