【发布时间】:2016-10-13 10:39:43
【问题描述】:
我们在构建 docker 镜像时遇到了 WORKDIR 的问题。是否可以打印WORKDIR的值?
我们试过了:
ECHO ${WORKDIR}
但是没有这样的指令ECHO
【问题讨论】:
标签: docker dockerfile
我们在构建 docker 镜像时遇到了 WORKDIR 的问题。是否可以打印WORKDIR的值?
我们试过了:
ECHO ${WORKDIR}
但是没有这样的指令ECHO
【问题讨论】:
标签: docker dockerfile
在构建过程中,Docker 没有内置方式来打印WORKDIR。您可以检查图像/图层的最终工作目录:
docker image inspect {image-name} | jq '.[].Config.WorkingDir'
可以通过打印 shell 默认工作目录来查看 Linux 容器构建步骤 workdir:
RUN pwd
或者shell经常将工作目录存放在PWD环境变量中
RUN echo "$PWD"
如果您使用的是较新版本的 dockers BuildKit,则需要使用 --progress=plain 启用标准输出
docker build --progress=plain .
【讨论】:
RUN pwd 和CMD pwd,它在构建图像时不会在控制台中打印任何内容。它只打印到容器的控制台。
-q 或在 docker 中获取缓存构建?
docker build,也试过--no-cache标志
docker build 命令似乎最近发生了一些变化,它在构建过程中隐藏了stdout。
简而言之,使用DOCKER_BUILDKIT=0 docker build 来恢复“旧”行为。
【讨论】:
如果我使用docker-compose up,则不会在我的 IDE 控制台中打印 RUN。
但是 CMD 可以。所以试试
CMD pwd
如果图像中有 python,这也应该有效
CMD ["python", "-c", "import os;print(os.getcwd())"]
请注意,只有一个,最后一个CMD命令会在“容器运行”阶段执行。所有其他人都将被默默地忽略。另一方面,有一个标准的管道解决方法:
CMD pwd && ls
【讨论】: