多次运行Docker映像时传递不同的参数
我需要在运行Docker Image时给出一个参数,它将是一个0-3的数字。
Dockerfile有以下几点:
WORKDIR "mydir/build" CMD ./maker oneapp > /artifacts/oneapp_$1.log ; ./maker twoapp > /artifacts/twoapp_$1.log ; ./maker -j13 threeapp > /artifacts/threeapp_$1.log
我将多次运行相同的Docker镜像,所以我需要将日志保存在/ 0,_1,_2,_3附加的/ artifact中。
我试图保持这个在Docker文件中,但不想在运行docker时将这个完整的行作为parameter passing。
入口点[“/ bin / bash”]
./maker oneapp> /artifacts/oneapp_$1.log; ./maker twoapp> /artifacts/twoapp_$1.log; ./maker -j13 threeapp> /artifacts/threeapp_$1.log
是否有可能做到这一点? 我需要在Dockerfile中进行修改以执行我想要的操作?
只需将您的参数注入为ENV。
在你的Dockerfile中声明一个ENV
。
ENV suffix 0 ./maker oneapp > /artifacts/oneapp_${suffix}.log
使用
ENV
设置的环境variables将在从结果图像运行容器时持久化。
您可以使用docker run --env <key>=<value>
docker inspect
查看这些值,并使用docker run --env <key>=<value>
更改它们。
这样,你可以在Docker上运行ENV
,并在正在运行的容器中获取它的值。
操作员可以通过使用一个或多个-e标志来设置容器中的任何环境variables,甚至覆盖上面提到的那些,或者已经由开发人员用Dockerfile ENV定义:
就你而言,例如:
docker run -e suffix=2 <image_name>