如何查看日志输出使用多克-撰写运行?

当我使用 docker-compose up时,我可以看到 docker-compose.yml文件中所有容器的日志。

但是,当我使用 docker-compose run app时,我只看到 app的控制台输出,而没有看到 app所依赖的任何服务。如何查看其他服务的日志输出?

237941 次浏览
  1. 使用命令以分离模式启动容器: docker-compose up -d
  2. 查看容器使用: docker ps
  3. 查看容器的日志: docker logs <containerid>

在编写本文时,docker-compose run命令没有提供查看其他服务日志的开关,因此需要使用 docker-compose logs命令查看所需的日志。

2022年6月10日更新

正如@Sandburg docker 所评论的那样,comose 现在已经集成到 docker 中了。如上所述,大部分 码头工人编写命令都可以是 电话,就像 没有仪表板一样:

新的 ComposeV2支持作为 DockerCLI 的一部分的 Compose 命令,现在可以使用了。

ComposeV2将复合函数集成到 Docker 平台中,继续支持大多数以前的 Docker 复合特性和标志。通过使用 docker Compose 而不是 docker-Compose 将连字符(-)替换为空格,可以运行 Compose V2。

2019年7月1日更新

docker-compose logs <name-of-service>

所有服务

docker-compose logs

使用 文件中的以下选项:

用法: 日志[选项][ SERVICE... ]

选择:

——无色生产单色输出。

- f,——跟踪日志输出。

时间戳显示时间戳。

—— tail = “ all”从日志末尾显示的行数 每个集装箱。

查看码头日志

您可以在分离模式下启动 Docker 撰写,然后将自己附加到 所有容器的日志。如果监视日志完成,您可以将自己从关闭服务的日志输出 没有中分离出来。

  1. 使用 docker-compose up -d以分离模式启动所有服务(-d)(在分离模式下不会看到任何日志)
  2. 所有运行服务的日志使用 docker-compose logs -f -t接上,而 -f意味着遵循日志输出,-t选项给出时间戳(参见 码头的参考资料)
  3. 从日志输出 没有关闭正在运行的容器时,使用 Ctrl + zCtrl + c自己对 分离进行操作

如果您对单个容器的日志感兴趣,可以使用 docker关键字:

  1. 使用 docker logs -t -f <name-of-service>

保存输出

若要将输出保存到文件中,请将以下内容添加到 log 命令:

  1. docker-compose logs -f -t >> myDockerCompose.log

如果您想在终端中看到输出 所有部门的日志

docker-compose logs -t -f --tail <no of lines>

例子: 假设您希望记录来自所有服务的最后5行的输出

docker-compose logs -t -f --tail 5

如果你希望 记录特定服务的输出,那么它可以做到如下:

docker-compose logs -t -f --tail <no of lines> <name-of-service1> <name-of-service2> ... <name-of-service N>

用法:

例如,假设你有 API 和门户服务,然后你就可以做 如下:

docker-compose logs -t -f --tail 5 portal api

其中5表示两个日志的最后5行。

档号: https://docs.docker.com/v17.09/engine/admin/logging/view_container_logs/

不幸的是,我们需要分别运行 docker-compose logsdocker-compose run。为了使其可靠地工作,我们需要抑制 docker-compose run退出状态,然后重定向日志并以正确的状态退出。

#!/bin/bash
set -euo pipefail
docker-compose run app | tee app.log || failed=yes
docker-compose logs --no-color > docker-compose.log
[[ -z "${failed:-}" ]] || exit 1