我们在构建Docker映像时遇到了WORKDIR的问题。是否可以打印WORKDIR的值?我们尝试:
WORKDIR
ECHO ${WORKDIR}
但是没有这样的指令ECHO
ECHO
eoxn13cs1#
Docker没有内置的方法在构建过程中打印WORKDIR。你可以通过inspect输出中的.Config.WorkingDir属性检查图像/层的最终工作目录:
inspect
.Config.WorkingDir
docker image inspect -f '{{.Config.WorkingDir}}' {image-name}
可以通过打印shell默认工作目录来查看Linux容器构建步骤工作目录:
RUN pwd
或者shell通常将工作目录存储在PWD环境变量中
RUN echo "$PWD"
如果您使用的是带有 BuildKit 的较新版本的Docker,则需要使用--progress=plain启用stdout
--progress=plain
docker build --progress=plain .
jgwigjjp2#
docker build命令最近似乎做了一些更改,它在构建过程中隐藏了stdout。简而言之,使用DOCKER_BUILDKIT=0 docker build可以恢复"旧的"行为。(reference)
docker build
stdout
DOCKER_BUILDKIT=0 docker build
xiozqbni3#
您可以在构建步骤中检查目录的内容,并使用以下命令将其打印出来
RUN ls RUN ls ..
在ubuntu 20.04.4 LTS WSL2下,我必须将--progress=plain与调试模式和无缓存结合起来才能看到输出:
docker -D build --progress=plain --no-cache.
7ivaypg94#
您可以在Dockerfile中使用以下命令
RUN pwd && ls
使用--progress=plain运行构建
docker build -t <image-name-you-want-to-give> --progress=plain .
xggvc2p65#
如果我使用docker-compose up,RUN不会在IDE控制台中打印出来,但是CMD可以,所以尝试一下CMD pwd如果你在图片中有python,这也应该可以工作CMD ["python", "-c", "import os;print(os.getcwd())"]请注意,仅一个命令,最后一个CMD命令将在“container-run”阶段执行。所有其他命令将被忽略。另一方面,有一个标准管道解决方案:CMD pwd && ls
docker-compose up
CMD pwd
CMD ["python", "-c", "import os;print(os.getcwd())"]
CMD pwd && ls
blpfk2vs6#
我把这行代码添加到我的dockerfile中:RUN pwd要打印当前工作目录,然后使用以下命令构建映像:
docker compose build --no-cache <name of service> 2>&1 | tee build.log
这将在终端中以更详细的格式打印输出,并将完整的日志记录到文件build.log中如果您不使用Docker compose,我希望您能够仅使用Docker命令来执行类似的操作。
6条答案
按热度按时间eoxn13cs1#
Docker没有内置的方法在构建过程中打印
WORKDIR
。你可以通过inspect
输出中的.Config.WorkingDir
属性检查图像/层的最终工作目录:可以通过打印shell默认工作目录来查看Linux容器构建步骤工作目录:
或者shell通常将工作目录存储在PWD环境变量中
如果您使用的是带有 BuildKit 的较新版本的Docker,则需要使用
--progress=plain
启用stdoutjgwigjjp2#
docker build
命令最近似乎做了一些更改,它在构建过程中隐藏了stdout
。简而言之,使用
DOCKER_BUILDKIT=0 docker build
可以恢复"旧的"行为。(reference)
xiozqbni3#
您可以在构建步骤中检查目录的内容,并使用以下命令将其打印出来
在ubuntu 20.04.4 LTS WSL2下,我必须将
--progress=plain
与调试模式和无缓存结合起来才能看到输出:7ivaypg94#
您可以在Dockerfile中使用以下命令
使用--progress=plain运行构建
xggvc2p65#
如果我使用
docker-compose up
,RUN不会在IDE控制台中打印出来,但是CMD可以,所以尝试一下CMD pwd
如果你在图片中有python,这也应该可以工作
CMD ["python", "-c", "import os;print(os.getcwd())"]
请注意,仅一个命令,最后一个CMD命令将在“container-run”阶段执行。所有其他命令将被忽略。另一方面,有一个标准管道解决方案:
CMD pwd && ls
blpfk2vs6#
我把这行代码添加到我的dockerfile中:
RUN pwd
要打印当前工作目录,然后使用以下命令构建映像:
这将在终端中以更详细的格式打印输出,并将完整的日志记录到文件build.log中
如果您不使用Docker compose,我希望您能够仅使用Docker命令来执行类似的操作。