如何从docker run命令中提供Dockerfile输入参数

时间:2016-06-24 16:10:11

标签: docker docker-compose dockerfile

FROM centos
RUN yum -y update
ENV zk=dx
RUN mkdir  $zk

构建图像后和运行fallowing命令后

docker run -it -e zk="hifi" <image ID>

我得到一个名为dx的目录,但没有hifi

任何人都可以帮助我如何从docker run命令

设置Dockerfile变量

1 个答案:

答案 0 :(得分:2)

这样做是因为:

  • Docker文件中的RUN命令是在Docker镜像构建时执行的(就像几乎所有的Dockerfile指令一样) - 即。当您运行 docker build
  • 当容器从图像运行时, docker run 命令会运行。

因此,当您运行 docker run 并将值设置为“hifi”时,该图像已经存在,其中包含一个名为“dx”的目录。目录创建任务已经执行 - 将环境变量更新为“hifi”不会改变它。

您无法在运行时设置Dockerfile build 变量。构建已经发生。

顺便说一下,在创建目录之前,你正在覆盖zk变量的值。如果 成功地将“hifi”传递到docker构建中,它将被覆盖并且该文件夹将始终被称为“dx”。