多次运行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>