当我使用docker-compose up时,我可以在docker-compose.yml文件中看到所有容器的日志。但是,当我使用docker-compose run app时,我只能看到app的控制台输出,而看不到app所依赖的任何服务。
docker-compose up
docker-compose.yml
docker-compose run app
app
hc2pp10m1#
在编写本文时,docker-compose run命令没有提供查看其他服务日志的开关,因此您需要使用docker-compose logs命令来查看所需的日志。
docker-compose run
docker-compose logs
正如@Sandburg docker compose所评论的,现在已经集成到docker中。正如这里所描述的,大多数docker compose命令都可以调用相同的方式,只是没有连字符。因此,docker compose代替docker-compose:新的Compose V2支持将compose命令作为Docker CLI的一部分,现已推出。Compose V2将合成功能集成到Docker平台中,继续支持以前的大多数Docker合成功能和标志。您可以使用Docker合成而不是Docker合成,通过将连字符(-)替换为空格来运行Compose V2。
docker-compose logs <name-of-service>
适用于所有服务
使用documentation中的以下选项:用法:日志[选项] [服务...]选项:--no-color产生单色输出。-f,--follow跟踪日志输出。-t,--时间戳显示时间戳。--tail=“all”从每个容器的日志末尾开始显示的行数。
您可以在分离模式下启动Docker撰写,并在以后将自己附加到所有容器的日志。如果您完成了日志查看,则可以将自己从日志输出中分离,而无需关闭您的服务。1.使用docker-compose up -d在分离模式下启动所有服务(-d)(在分离模式下看不到任何日志)1.使用docker-compose logs -f -t将自己附加到所有正在运行的服务的日志,而-f表示您遵循日志输出,-t选项为您提供时间戳(请参见Docker reference)1.使用Ctrl + z或Ctrl + c将自己从日志输出中分离,而不关闭正在运行的container如果您对单个容器的日志感兴趣,可以使用docker关键字:1.使用docker logs -t -f <name-of-service>
docker-compose up -d
-d
docker-compose logs -f -t
-f
-t
Ctrl + z
Ctrl + c
docker
docker logs -t -f <name-of-service>
要将输出保存到文件中,请将以下内容添加到logs命令中:
3npbholx2#
如果您想查看终端中所有服务的输出日志。
docker-compose logs -t -f --tail <no of lines>
例如:假设您要记录所有服务的最后5行输出docker-compose logs -t -f --tail 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 logs -t -f --tail 5 portal api
xxslljrj3#
1.使用以下命令以分离模式启动container:docker-compose up -d1.要查看容器,请用途:docker ps1.要查看容器的日志:docker logs <containerid>
docker ps
docker logs <containerid>
xwbd5t1u4#
不幸的是,我们需要将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
4条答案
按热度按时间hc2pp10m1#
在编写本文时,
docker-compose run
命令没有提供查看其他服务日志的开关,因此您需要使用docker-compose logs
命令来查看所需的日志。更新日期:2022年6月10日
正如@Sandburg docker compose所评论的,现在已经集成到docker中。正如这里所描述的,大多数docker compose命令都可以调用相同的方式,只是没有连字符。因此,docker compose代替docker-compose:
新的Compose V2支持将compose命令作为Docker CLI的一部分,现已推出。
Compose V2将合成功能集成到Docker平台中,继续支持以前的大多数Docker合成功能和标志。您可以使用Docker合成而不是Docker合成,通过将连字符(-)替换为空格来运行Compose V2。
更新日期:2019年7月1日
适用于所有服务
使用documentation中的以下选项:
用法:日志[选项] [服务...]
选项:
--no-color产生单色输出。
-f,--follow跟踪日志输出。
-t,--时间戳显示时间戳。
--tail=“all”从每个容器的日志末尾开始显示的行数。
参见Docker日志
您可以在分离模式下启动Docker撰写,并在以后将自己附加到所有容器的日志。如果您完成了日志查看,则可以将自己从日志输出中分离,而无需关闭您的服务。
1.使用
docker-compose up -d
在分离模式下启动所有服务(-d
)(在分离模式下看不到任何日志)1.使用
docker-compose logs -f -t
将自己附加到所有正在运行的服务的日志,而-f
表示您遵循日志输出,-t
选项为您提供时间戳(请参见Docker reference)1.使用
Ctrl + z
或Ctrl + c
将自己从日志输出中分离,而不关闭正在运行的container如果您对单个容器的日志感兴趣,可以使用
docker
关键字:1.使用
docker logs -t -f <name-of-service>
保存输出
要将输出保存到文件中,请将以下内容添加到logs命令中:
3npbholx2#
如果您想查看终端中所有服务的输出日志。
例如:假设您要记录所有服务的最后5行输出
docker-compose logs -t -f --tail 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/
xxslljrj3#
1.使用以下命令以分离模式启动container:
docker-compose up -d
1.要查看容器,请用途:
docker ps
1.要查看容器的日志:
docker logs <containerid>
xwbd5t1u4#
不幸的是,我们需要将
docker-compose logs
与docker-compose run
分开运行。为了使其可靠地工作,我们需要抑制docker-compose run
退出状态,然后重定向日志并以正确的状态退出。