50% off 所有套餐限时优惠,起价 $2.48/mo
9 min left
开发者工具与DevOps

Docker Compose 日志易用指南:如何检查和管理

Ada Lovegood By Ada Lovegood 9 min read Updated Feb 23, 2025
docker logs

想知道 Docker 应用在后台做什么吗?让我们深入了解日志这个窗口。日志就像你的容器的秘密窗口,记录它们的每一个动作。日志对于排查问题非常有帮助。但在我们开始之前,让我们先快速了解一下 Docker 和 Docker Compose 是什么。

Docker 允许你将应用打包成小容器,并在大多数操作系统上运行,无需任何依赖。这就像把你的应用放在称为容器的小盒子里,它们可以在任何地方以相同的方式运行。了解容器是学习 Docker Compose 的重要前提。所以我建议你先阅读我们关于 容器化的优势。

Docker Compose 内置 Docker,简化了多个容器化应用的开发。它通过链接服务、网络和存储来实现这一点。Docker 容器日志和 Docker Compose 日志帮助开发者了解每个容器的运行情况。

对 Docker Compose 日志感兴趣吗?你来对地方了。这篇文章会讲解 Docker Compose 日志的基础知识,并深入探讨一些高级细节。了解如何充分利用 Docker Compose 来改进你的项目。

Docker Compose 日志的重要性

假设一个开发者用 Docker 启动了一个应用,但没有配置 Docker 日志。起初一切看起来都正常。但很快用户开始遇到错误,应用变得缓慢。如果没有 Docker 日志,开发者无法看到 Docker 容器内发生了什么。Docker Compose 日志就像这些容器的详细记录。它们记录了每个细节,这对于后续的问题排查至关重要。

作为开发者或系统管理员,你必须了解多容器应用的内部运行和相互交互情况。这就是 Docker Compose 日志的用武之地。那么,为什么需要这些日志呢?

  • 故障排查和调试

应用运行不正常或出现错误时,检查 docker 日志。Docker 日志是追踪问题的首要资源。通过查看 docker 日志,开发者可以定位问题的根源,无论是代码中的 bug、配置错误还是资源问题。

  • 监控应用健康状态

定期监控应用日志有助于了解服务的整体运行状况。日志可以暴露早期警告信号,比如重复出现的错误和响应缓慢。及早发现这些模式能防止未来的问题。

  • 审计和合规性

对于需要遵守特定标准的应用,docker 日志是证明应用是否符合规范的第一手证据。这些日志在监控已授权或未授权的活动时也扮演着重要角色。

  • Optimization

日志是软件优化的宝贵资源,提供了性能数据。例如,开发者可以发现运行缓慢的查询、低效的代码路径或未充分利用的资源。

编写 Docker 配置:部署 Web 服务器

在本节中,我们将一起创建一个 Docker 示例。首先需要构建一些东西来开启我们的 Docker Compose 日志之旅。我们部署一个 web 服务器。要创建一个 Dockerfile,只需运行 nano Dockerfile 在你 VPS 上的目标文件夹中执行以下内容,然后保存:

 

FROM nginx:alpine
RUN rm /usr/share/nginx/html/index.html
EXPOSE 80
CMD ["nginx", "-g", "daemon off;"]

这段代码的每一行各做什么呢?

  • 我们从一个轻量级的基础镜像开始, nginx:alpine.
  • 接下来,我们清除 Nginx 的默认欢迎页面。
  • 然后,我们确保 web 服务器在端口上监听 80.
  • 最后,我们用以下命令运行 Nginx 服务器 CMD.

现在我们的 Dockerfile 已准备好,下一步是创建 Docker Compose 文件。这是 docker-compose.yml file:

version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
volumes:
- ./index.html:/usr/share/nginx/html/index.html

让我们逐部分分解,完全理解每个部分:

  • We’re using version 3.8.
  • 在下一行,我们给服务命名为web“.
  • 然后,我们指示 Docker 从当前文件夹构建我们的 web 服务器。
  • 我们将主机上的端口 8080 映射到容器中的端口 80,以便 web 服务器可以建立连接。
  • 最后,volumes 配置将 index.html 从主机磁盘映射到容器。之后,你可以创建一个 index.html 文件,放入任何你想要的内容,并将其放在 Dockerfile and docker-compose.yml files exist.

现在是时候用 Docker Compose 运行我们的 Docker 容器了。只需运行 docker-compose up.

使用 Docker Compose 运行 Docker 容器

运行 docker-compose up 命令后,Docker 会从互联网下载所需的镜像,并按照我们配置文件中的说明进行配置。

要检查 Web 服务器是否启动并正常运行,请打开浏览器,输入你的 VPS IP 地址,然后访问 8080 端口。

Docker 化的网页

另外,你也可以使用 docker-compose up -d 在后台运行容器。

使用 Docker Compose 访问日志

现在 Web 服务器已经启动并正常运行。它正在生成日志并存储这些信息供后续使用。访问 Docker Compose 日志对于故障排查和监控至关重要。但如何读取这些日志呢?这就是 docker-compose logs 派上用场的地方。确保你在配置文件所在的目录中,然后运行该命令。

使用 Docker Compose 访问日志

有时你可能想实时查看日志的生成过程。只需在前面的命令末尾添加 -f 标志,然后运行 docker-compose logs -f.

使用 Docker Compose 访问日志

某些基于 Docker 的应用在日志中可能不提供时间戳。这种情况下,你可以使用 docker-compose logs -t 为日志的每一行添加记录时间。

使用 Docker Compose 访问日志

Docker 日志也可以显示最新条目。要实现这一点,请使用 docker-compose logs --tail 10 来查看最新的 10 条日志记录。Docker Compose 的日志尾部功能与 Docker 日志尾部功能类似,当你想快速查看最近的活动而不需要浏览整个日志历史时,这个功能特别有用。

使用 Docker Compose 访问日志

使用 Docker Compose 的主要目的是创建多容器应用。因此,你可能需要读取特定服务的日志。要做到这一点,请使用 docker-compose logs -f SERVICE, remembering to replace SERVICE 并替换为你实际的服务名称。

使用 Docker 访问日志

Docker Logging

对于复杂的应用,特别是在大型环境中,Docker 生态系统可能会变得更加复杂。如我们所知,每个容器都会生成日志。因此,日志驱动程序这一机制负责接收、传递和存储日志。默认情况下,Docker 使用 JSON 文件作为日志驱动程序,但它也支持许多其他驱动程序,每种都各有优缺点。

大家都认可日志在故障排查和增强系统性能等多个方面至关重要。下面我们将介绍使用容器日志的两个主要方面:

  • Monitoring: 日志的主要作用是监控。它们通常会反映容器化应用的整体运行状态。
  • Troubleshooting: 出现问题时,日志帮助我们发现应用故障。

由于 docker logs 和 docker compose logs 会持续生成,它们可能会占满 VPS 存储。因此我们需要一个管理磁盘空间的策略,叫做日志轮转策略。要创建和使用此策略,请返回 docker-compose.yml 文件并打开它。然后添加一个日志记录部分,配置如下:

version: '3.8'
services:
web:
build: .
ports:
- "8080:80"
volumes:
- ./index.htm:/usr/share/nginx/html/index.htm
logging:
driver: json-file
options:
max-size: "200k"
max-file: "10"

你可以根据需要不断调整 max-size and max-file

Docker 日志传输模型

在更复杂的环境中,工程师可能会选择与默认 JSON 驱动程序不同的日志记录模型,比如 Syslog、fluentd 等。不过需要记住的是,JSON 文件驱动程序适用于大多数日志记录场景,你可能无需偏离默认模式。

根据你的应用架构或组织需求,你可能需要使用称为日志聚合器的集中式日志记录解决方案。这些服务包括 Elasticsearch、Logstash、Kibana 等,旨在接收来自各种源的日志,并在单个集中位置进行整合、存储和分析。

反过来说,你应该使用更经济高效的存储解决方案来存储日志。考虑这样一个场景:你的 VPS 使用高速且昂贵的存储,用这样的高端资源来存储可能只需要供将来参考的日志就不划算了。

有很多种日志记录模型可用,各有优劣。重要的是要仔细评估每种模型,根据你的具体需求选择一种。

Linux VPS 托管

选择经济版或高级 Linux VPS 来托管网站或远程桌面,价格最低。VPS 运行在 Linux KVM 上,效率更高,采用强大硬件和 NVMe SSD 存储,速度更快。

Read More

Conclusion

了解 Docker Compose 日志很关键。它们帮助你有效地管理和调试 Docker 应用。学会访问和监控这些日志可以改进故障排查,提升应用的性能和安全性。无论是开发还是系统管理,使用 Docker Compose 日志都是必要的。它们确保你的容器管理有效进行。

FAQ

如何按时间筛选 Docker Compose 日志?

Docker Compose 没有提供直接的按时间过滤日志的方法。不过你可以通过管道将日志传给 grep 来按模式匹配过滤。比如,你可以使用:docker-compose logs | grep "2023-04-06",将 "2023-04-06" 替换为你要搜索的具体日期或时间模式。

如何停止使用 Docker Compose 启动的容器?

进入包含 docker-compose.yml 文件的目录,运行命令 docker-compose down。

如何手动删除日志文件?

除了在 docker-compose.yml 文件中配置日志轮转,你也可以手动删除 /var/lib/docker/containers/<container_id>/ 中的 Docker JSON 日志文件。操作前,应该用 docker ps -a 确认 Docker 容器 ID。

可以跟踪 Docker 日志吗? 

可以。要实现这一点,你应该使用 docker logs 命令配合 -f 或 --follow 选项。这将为你实时显示 Docker 日志。

Share

博客更新

Keep reading.

一个金属容器,由发光的霓虹青色线框圆顶保护,容器上显示文章标题和 Cloudzy 徽标,背景为深蓝色。
开发者工具与DevOps

2026 年需要避免的 Docker 安全错误

Docker 可以在生产环境中运行数月,没有任何明显问题。容器启动,应用响应,一切正常。然后一个暴露的端口或一个配置错误的权限就会造成

Rexa CyrusRexa Cyrus 15 min read
一个蓝色发光的3D立方体结构,代表Docker容器,旁边是文本'Portainer vs Yacht: 你应该选择哪个Docker UI',以及Cloudzy标志。
开发者工具与DevOps

Portainer vs Yacht:2026 年应该选择哪款 Docker UI?

通过 CLI 管理 Docker 容器对简单的设置很有效,但扩展性很差。随着容器数量增加,手动追踪状态、日志和更新很容易出错

Rexa CyrusRexa Cyrus 13 min read
持续集成工具
开发者工具与DevOps

2026年优化DevOps工作流的最佳CI/CD工具

软件开发的格局瞬息万变。如果你不想被快速发展的行业甩在后面,应该采用DevOps方法论和敏捷开发实践

Ada LovegoodAda Lovegood 11 min read

Ready to deploy? From $2.48/mo.

独立云服务,始于2008年。AMD EPYC、NVMe,40 Gbps。14天退款保障。