在执行“ docker run”时获取当前指令执行的日志

时间:2018-08-20 16:59:53

标签: docker

我是Docker的新手,我正在尝试查看我是否可以在执行以下指令时获取以下指令的日志。

FROM ubuntu:16.04

ENV name John

ENTRYPOINT echo "Hello, $name"

我的目的是检查 shell 模式在这里执行ENV的方式(路径等)以及ENTRYPOINT的执行方式。

我可以想象这些日志对于调试目的很有用,所以我可能缺少明显的东西。有什么想法吗?

2 个答案:

答案 0 :(得分:2)

Dockerfile指令执行的不多;他们在构建的Docker映像的字段中记录一些状态。正如@BrayanCaldera的回答所表明的那样,您会在docker build输出中看到这些内容,但是在容器构建期间没有任何操作。

如果ENTRYPOINT是成熟的脚本,则可以在其上使用常规的脚本调试技术来查看容器启动时发生的情况。例如:

#!/bin/sh
# Print out every command as it executes
set -x
# Print out the current environment
env
# Run the actual command
exec "$@"

要告诉Docker映像docker run时默认执行的操作,通常应使用CMD指令。如果需要进行预启动设置,则使用exec "$@"运行CMD的ENTRYPOINT脚本是典型的路径。

答案 1 :(得分:0)

要查看终端上的日志,只需执行以下行即可:

docker build --rm -f dockerfile -t log:latest .

如果您需要将这些日志存储在文件中,则只需执行以下行:

docker build -t logs . > image.log