如何从Docker运行命令给Dockerfileinput参数

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

build立图像后,运行hibernate命令后

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

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

任何人都可以帮助我如何从docker运行命令设置Dockerfilevariables

这performance得如此,因为:

  • Dockerfile中的RUN命令在构buildDocker镜像时执行(就像几乎所有的Dockerfile指令一样) – 即。 当你运行docker构build
  • docker run命令在容器从映像运行时运行

所以当你运行docker run并将值设置为“hifi”时,图像已经存在,其中有一个名为“dx”的目录。 目录创build任务已经完成 – 更新环境variables为“hifi”不会改变它。

运行时您不能设置Dockerfile生成variables。 构build已经发生。

顺便提一下,在创build目录之前,您正在覆盖zkvariables的值。 如果您成功地将“hifi”传递给docker版本,它将被覆盖,并且该文件夹将始终被称为“dx”。