我们在构建Docker镜像时遇到了WORKDIR
的问题。是否可以打印WORKDIR
的值?
我们尝试过:
ECHO ${WORKDIR}
但是没有这样的指令 ECHO
我们在构建Docker镜像时遇到了WORKDIR
的问题。是否可以打印WORKDIR
的值?
我们尝试过:
ECHO ${WORKDIR}
但是没有这样的指令 ECHO
Docker没有内置的方法来在构建过程中打印WORKDIR
。您可以通过inspect
输出中的.Config.WorkingDir
属性检查镜像/层的最终工作目录:
docker image inspect -f '{{.Config.WorkingDir}}' {image-name}
可以通过打印shell的默认工作目录来查看Linux容器构建步骤的工作目录:
RUN pwd
或者shell经常将工作目录存储在PWD环境变量中
RUN echo "$PWD"
RUN
步骤并且已缓存,请添加--no-cache
标志。
如果您正在使用带有BuildKit的较新版本的Docker,则需要使用--progress=plain
启用构建的stdout。docker build --no-cache --progress=plain .
RUN pwd && ls
使用--progress=plain选项运行构建
docker build -t <image-name-you-want-to-give> --progress=plain .
在构建步骤期间,您可以检查目录的内容并使用类似的命令打印它:
RUN ls
RUN ls ..
--progress=plain
与 debug 模式和 no-cache 结合使用才能看到输出:docker -D build --progress=plain --no-cache.
如果我使用 docker-compose up
,RUN 不会在我的 IDE 控制台中打印。
但是 CMD 会。所以尝试一下
CMD pwd
如果镜像中有 Python,则这也应该可以工作
CMD ["python", "-c", "import os;print(os.getcwd())"]
请注意,在“容器运行”阶段只有最后一个 CMD 命令将被执行。所有其他命令都将被静默忽略。另一方面,有一个标准的管道解决方法:
CMD pwd && ls
RUN pwd
docker compose build --no-cache <name of service> 2>&1 | tee build.log
这将以更详细的格式在终端中打印输出,并在文件 build.log 中完成完整的日志记录。
如果您不使用 docker compose,我希望您能够使用类似的 docker 命令执行类似操作。
RUN pwd
和CMD pwd
,但在构建镜像时控制台没有输出任何内容。它只会输出到容器的控制台。 - A-SharabianiRUN pwd
执行pwd
命令...输出默认被 Docker 构建过程捕获。RUN echo $(pwd)
告诉 RUN 显示 命令的输出。尝试两种方式并自行查看。 - troyfolger