当我使用 docker-compose up时,我可以看到 docker-compose.yml文件中所有容器的日志。
docker-compose up
docker-compose.yml
但是,当我使用 docker-compose run app时,我只看到 app的控制台输出,而没有看到 app所依赖的任何服务。如何查看其他服务的日志输出?
docker-compose run app
app
docker-compose up -d
docker ps
docker logs <containerid>
在编写本文时,docker-compose run命令没有提供查看其他服务日志的开关,因此需要使用 docker-compose logs命令查看所需的日志。
docker-compose run
docker-compose logs
正如@Sandburg docker 所评论的那样,comose 现在已经集成到 docker 中了。如上所述,大部分 码头工人编写命令都可以是 电话,就像 没有仪表板一样:
新的 ComposeV2支持作为 DockerCLI 的一部分的 Compose 命令,现在可以使用了。
ComposeV2将复合函数集成到 Docker 平台中,继续支持大多数以前的 Docker 复合特性和标志。通过使用 docker Compose 而不是 docker-Compose 将连字符(-)替换为空格,可以运行 Compose V2。
docker-compose logs <name-of-service>
所有服务
使用 文件中的以下选项:
用法: 日志[选项][ SERVICE... ]
选择:
——无色生产单色输出。
- f,——跟踪日志输出。
时间戳显示时间戳。
—— tail = “ all”从日志末尾显示的行数 每个集装箱。
您可以在分离模式下启动 Docker 撰写,然后将自己附加到 所有容器的日志。如果监视日志完成,您可以将自己从关闭服务的日志输出 没有中分离出来。
-d
docker-compose logs -f -t
-f
-t
Ctrl + z
Ctrl + c
如果您对单个容器的日志感兴趣,可以使用 docker关键字:
docker
docker logs -t -f <name-of-service>
若要将输出保存到文件中,请将以下内容添加到 log 命令:
docker-compose logs -f -t >> myDockerCompose.log
如果您想在终端中看到输出 所有部门的日志。
docker-compose logs -t -f --tail <no of lines>
例子: 假设您希望记录来自所有服务的最后5行的输出 docker-compose logs -t -f --tail 5
例子: 假设您希望记录来自所有服务的最后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行。
用法:
例如,假设你有 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 logs和 docker-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