在 Docker 中,可以通过以下方法查看指定容器的日志:


1. 使用 docker logs 命令查看容器日志

基本命令

Docker 提供 docker logs 命令可以直接查看容器的日志。以下是基本的命令格式:

docker logs <容器ID或容器名称>

示例

你可以通过容器的 容器名称 或 容器ID 来查看日志:

docker logs my-container

docker logs abc123d4567

如果你不确定容器名称或 ID,可以通过 docker ps 查看所有运行中的容器:

docker ps

2. 持续动态查看日志 (docker logs --follow)

实时查看最新日志

使用 --follow 选项可以实时查看某个容器的日志更新:

docker logs --follow <容器ID或名称>

类似于 Linux 的 tail -f 命令,日志会随着容器的运行动态显示。


3. 查看指定时间范围或限制行数的日志

限制日志输出行数

用 --tail 参数可以限制显示最后的几行日志:

docker logs --tail 100 <容器ID或名称>

显示该容器的最后 100 行日志。


显示带时间戳的日志

如果需要查看日志的生成时间,可以使用 --timestamps 参数:

docker logs --timestamps <容器ID或名称>

从某个时间点开始查看日志

从 Docker 20.10 版本开始,支持使用时间过滤(ISO 8601 格式),可以从指定时间点开始查看日志:

docker logs --since "2023-08-01T00:00:00" <容器ID或名称>
  • --since:从指定时间点开始查看日志(如 2023-08-01T00:00:00)。
  • --until:指定日志的结束时间。Bash1docker logs --since "2023-08-01T00:00:00" --until "2023-08-01T01:00:00" <容器ID或名称>

4. 使用 docker-compose 查看容器日志

如果是通过 docker-compose 启动的容器,可以使用以下命令查看日志:

docker-compose logs <服务名称>

示例

docker-compose logs web
  • 不指定服务名称会显示所有服务的日志。
  • 可以使用 -f 选项动态查看日志:Bash1docker-compose logs -f web

5. 查看容器的标准输出日志文件

容器的日志通常存储在主机上 /var/lib/docker/containers/<容器ID>/ 目录内。如果容器日志很大的情况下或需要直接分析日志,可以手动进入日志文件目录查看。

查找日志文件路径

  1. 运行以下命令获取容器 ID:Bash1docker ps
  2. 找到日志文件:Bash1ls /var/lib/docker/containers/<容器ID>/你会看到类似 container-id-json.log 的日志文件。

手动查看日志

使用 cat 或其他工具查看日志。比如,查看最新的日志:

tail -f /var/lib/docker/containers/<容器ID>/<容器ID>-json.log

6. 使用外部工具查看日志

如果日志数据较大,可以用日志分析工具(比如 grepawk 或日志系统 ELK)来处理容器的日志,例如:

docker logs <容器ID> | grep "ERROR"

这将过滤出所有包含 ERROR 的日志行。


7. 解决容器日志文件过大

如果发现容器的日志文件特别大,可以通过以下方法解决:

限制日志大小

配置 Docker 容器的 log-driver 和 log-opts

docker run --log-driver=json-file --log-opt max-size=10m --log-opt max-file=3 <镜像名>
  • max-size=10m:每个日志文件的最大大小为 10MB。
  • max-file=3:最多保留 3 个日志文件。

清理日志

手动清理日志文件:

truncate -s 0 /var/lib/docker/containers/<容器ID>/<容器ID>-json.log


如何查看指定Docker容器的日志插图

关注公众号:程序新视界,一个让你软实力、硬技术同步提升的平台

除非注明,否则均为程序新视界原创文章,转载必须以链接形式标明本文链接

本文链接:https://choupangxia.com/2025/08/02/docker-logs/