如何使用docker-compose run查看日志输出?


96

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

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


4
您可以使用docker-compose logs -f service_name
熊炳金,

另请注意,docker-compose run每次执行时都会创建一个新容器。
jazgot

docker-compose run在circleci中运行只是为了运行我的测试,所以如果它创建了一个新的容器就可以了。主要问题是没有看到从依赖服务输出的日志。
sthomps

Answers:


134

更新2019年7月1日

docker-compose logs <name-of-service>

文档中

用法:日志[选项] [服务...]

选项:

--no-color产生单色输出。

-f,--follow跟随日志输出。

-t,--timestamps显示时间戳。

--tail =“ all”从每个容器的日志末尾开始显示的行数。

查看Docker日志

您可以以分离模式启动Docker compose,稍后将自己附加到所有容器的日志中。如果您已经看完日志,则可以在关闭服务的情况下将自己从日志输出中分离出来。

  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>

保存输出

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

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

7
我不知道为什么这是公认的答案。问题是关于docker-compose运行以及很多时候使用-rm运行它,因此没有日志。我想在运行Shell脚本时看到其输出。
詹姆斯·奥布莱恩

2
尽管这是有用的信息,但这不是问题的答案。正如@ JamesO'Brien所说,问题docker-compose run与这些服务有关,并附带于这些服务中,这些服务具有唯一的名称,该名称来自docker.compose.yml
TetraDev

20

如果要查看终端中所有服务的输出日志

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/


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

1

不幸的是,我们需要与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
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.