您想知道 Docker 应用程序在幕后做什么吗?让我们详细了解容器中的秘密窗口(称为日志),该窗口显示它们所做的每一个动作。日志对于解决问题非常有帮助。但在开始之前,让我们快速了解一下 Docker 和 Docker Compose 是什么。
Docker 允许您将应用程序打包到小型容器中,并在大多数操作系统上运行它们,而无需任何依赖项。这就像将您的应用程序放入称为容器的小盒子中,它可以在任何地方以相同的方式运行。了解容器是学习 Docker compose 的重要前提。因此,我鼓励您首先阅读我们的博客 容器化的好处。
Docker Compose 随 Docker 一起提供,通过链接服务、网络和存储来简化多个容器化应用程序的开发。 Docker 容器日志和 Docker Compose 日志记录可帮助开发人员了解每个容器的用途。
那么,您对 Docker Compose Logs 感到好奇吗?您来对地方了。本博客将解释 Docker Compose 日志的基础知识并涵盖更多高级细节。了解如何在您的项目中充分利用 Docker Compose。
Docker Compose 日志的重要性
想象一下,开发人员使用 Docker 启动了一个应用程序,但跳过了设置 Docker 日志。起初,一切似乎都很好。但很快,用户发现错误,应用程序速度变慢。如果没有 Docker 日志,开发人员就无法看到 Docker 容器内部出了什么问题。 Docker Compose 日志就像这些容器的详细记录。他们记录发生的每一个细节,这对于以后发现和解决问题很重要。
作为开发人员或系统管理员,您必须了解多链应用程序内部和之间发生的情况。这就是 Docker Compose 日志充当方便工具的地方。那么,为什么需要这些日志呢?
-
故障排除和调试
当应用程序未正确运行或遇到错误时检查 docker 日志。 Docker 日志是您可以查看以跟踪问题的第一个资源。通过检查 docker 日志,开发人员可以查明问题的根本原因和根源,无论是代码中的错误、配置错误还是资源问题。
-
监控应用程序运行状况
定期监控应用程序日志有助于了解服务的整体健康状况。日志可以揭示早期预警信号,例如重复错误和响应缓慢。及早观察这些模式可以防止将来出现潜在问题。
-
审计与合规
对于需要遵循特定标准的应用程序,docker 日志是显示应用程序是否遵守准则的第一个证据。这些日志在监控授权或未经授权的活动方面也发挥着重要作用。
-
优化
日志通过提供性能数据而成为软件优化的宝贵资源。例如,开发人员可以识别运行缓慢的查询、低效的代码路径或未充分利用的资源。
制定 Docker 配方:部署 Web 服务器
在本节中,我们将一起创建 Docker 配方。我们首先需要构建一些东西来开始我们的 Docker Compose 日志之旅。让我们为此目的部署一个 Web 服务器。要创建 Dockerfile,只需运行 纳米 Dockerfile 将以下内容放入 VPS 上所需的文件夹中,然后保存:
FROM nginx:alpine RUN rm /usr/share/nginx/html/index.html EXPOSE 80 CMD ["nginx", "-g", "daemon off;"]
那么,这段代码的每一行都做了什么?
- 我们从轻质底座开始, nginx:高山.
- 接下来,我们清除Nginx的默认欢迎页面。
- 然后,我们确保 Web 服务器正在侦听端口 80.
- 最后,我们运行 Nginx 服务器 指令管理系统.
现在我们的 Dockerfile 已准备就绪,我们将继续下一步,即创建 Docker Compose 文件。这是结构 docker-compose.yml 文件:
version: '3.8' services: web: build: . ports: - "8080:80" volumes: - ./index.html:/usr/share/nginx/html/index.html
让我们将其分解以完全理解每个部分:
- 我们正在使用版本 3.8.
- 在下一行,我们将我们的服务命名为“网络“.
- 然后,我们指示 Docker 从当前文件夹构建我们的 Web 服务器。
- 我们将主机上的端口 8080 链接到容器中的端口 80,以使我们的 Web 服务器能够建立连接。
- 最后,卷配置图 index.html 从主机磁盘到容器。稍后,您可以创建一个 index.html 文件包含您想要的任何内容并将其放置在 Dockerfile 和 docker-compose.yml 文件存在。
现在是时候使用 Docker Compose 运行我们的 Docker 容器了。简单来说,我们运行 docker-compose up.

一旦你运行 docker-compose up 命令,Docker将从互联网下载所需的镜像并按照我们的配置文件中的指示配置它们。
要检查我们的 Web 服务器是否已启动并正在运行,请打开您的 Web 浏览器,输入您的 VPS IP 地址,然后请求访问端口 8080。

作为旁注,您可以使用 docker-compose up -d 在后台运行容器。
使用 Docker Compose 访问日志
现在,我们的 Web 服务器已准备就绪,已启动并正在运行。它已经生成日志并存储这些信息以供以后使用。访问 docker compose 日志对于故障排除和监控至关重要。但是我们如何读取这些日志呢?这是哪里 docker-compose 日志 派上用场了。确保您位于配置所在的文件夹中,然后运行该命令。

有时,您可能希望查看正在生成的日志的实时版本。只需在上一个命令末尾添加 -f 并运行 docker-compose 日志-f.

某些基于 Docker 的应用程序可能不会在其日志中为您提供时间戳。因此,您可以使用 docker-compose 日志-t 为日志的每一行添加记录时间。

Docker 日志还可以显示最新的条目。要实现此目的,请使用 docker-compose 日志 –tail 10 查看最新 10 条日志条目。 Docker 组成日志尾部,同样,当您想要快速检查最近的活动而不滚动整个日志历史记录时,docker 日志尾部特别有用。

使用 Docker Compose 的主要目的是创建多容器应用程序。因此,您可能需要读取所需服务的特定日志。为此,请使用 docker-compose 日志 -f 服务,记得更换 服务 与您的实际服务名称。

Docker 日志记录
对于融合应用程序来说,Docker 生态系统可能会变得更加复杂,尤其是在大型环境中。众所周知,每个容器都会生成日志。因此,称为日志驱动程序的机制负责接收、传递和存储日志。默认情况下,Docker 使用 JSON 文件作为日志记录驱动程序,但它也支持各种其他驱动程序,每个驱动程序都有其优点和缺点。
每个人都同意日志在各个领域都至关重要,包括故障排除和增强系统性能。下面,我们将介绍使用容器日志的两个主要方面:
- 监控: 日志的主要目的是监控。它们通常揭示了我们容器化应用程序的整体健康状况。
- 故障排除: 如果出现问题,日志可以帮助我们检测应用程序故障。
由于docker日志和docker compose日志不断生成,它们可能会填满所有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"
你可以不断调整 最大尺寸 和 最大文件 根据您的需要。
Docker 日志交付模型
工程师可能会在比默认 JSON 驱动程序更高级的环境中选择不同的日志记录模型,例如 Syslog、Fluentd 等。但是,请务必记住,JSON 文件驱动程序适用于大多数日志记录场景,并且可能不需要偏离默认模式。
根据您的应用程序的架构或组织要求,您可能被迫使用称为日志聚合器的中央日志记录解决方案。这些服务包括 弹性搜索、Logstash、Kibana 等旨在接收来自各种来源的日志,并在单个中央位置整合、存储和分析它们。
相反,您应该使用更具成本效益的存储解决方案来存储日志。考虑一下您的 VPS 使用高速且昂贵的存储的场景;利用如此优质的资源来存储您可能只需要供将来参考的日志可能并不经济。
有多种日志记录模型可供使用,每种模型都有优点和缺点。仔细评估每个模型并根据您的具体需求选择一个模型至关重要。
以最便宜的价格为自己购买经济型或高级 Linux VPS 来托管您的网站或远程桌面。 VPS 在 Linux KVM 上运行以提高效率,并在具有 NVMe SSD 存储的强大硬件上运行以提高速度。
阅读更多结论
了解 Docker Compose 日志是关键。它们有助于很好地管理和调试您的 Docker 应用程序。学习访问和监控这些日志可以改善问题的解决并提高应用程序的性能和安全性。无论是开发还是管理系统,使用 Docker Compose 日志都是必不可少的。他们确保您的容器管理有效。
常问问题
如何按时间过滤 Docker Compose 日志?
Docker Compose 不提供按时间过滤日志的直接方法。但是,您可以通过 grep 进行模式匹配来过滤日志。例如,您可以使用:docker-compose log | grep “2023-04-06”,将“2023-04-06”替换为您要搜索的特定日期或时间模式。
如何停止使用 Docker Compose 启动的容器?
导航到包含 docker-compose.yml 文件的目录并运行命令 docker-compose down。
如何手动删除日志文件?
您可以从 /var/lib/docker/containers/<container_id>/ 手动删除 Docker JSON 日志文件,而不是在 docker-compose.yml 文件中配置日志轮换。在此之前,您应该使用 docker ps -a 识别 Docker 容器 ID。
你能跟踪 Docker 日志吗?
是的,你可以。为此,您应该使用 docker log 命令以及 -f 或 –follow 选项。这将为您跟踪 Docker 日志。