多次运行Docker映像时传递不同的参数

多次运行Docker映像时传递不同的参数,docker,docker-compose,dockerfile,docker-machine,Docker,Docker Compose,Dockerfile,Docker Machine,我需要在运行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 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的/artifacts中(视情况而定)

我尝试将其保存在Docker文件中,但不想在运行Docker时将这一行作为参数传递

入口点[“/bin/bash”]

./maker oneapp>/artifacts/oneapp_u$1.log/maker twoapp> /artifacts/twoapp_u$1.log/制造商-j13 threeapp> /工件/threeapp_u1.log


有可能这样做吗?我需要在Dockerfile中修改什么才能完成我想要的任务?

只需将您的参数作为ENV注入即可

宣布

从生成的映像运行容器时,使用
ENV
设置的环境变量将保持不变。
您可以使用
docker inspect
查看值,并使用
docker run--env=
更改值

这样,您就可以声明它,并受益于它在运行容器中的值

操作员可以通过使用一个或多个-e标志设置容器中的任何环境变量,甚至覆盖上面提到的标志,或者开发人员已经使用Dockerfile ENV定义的标志:

例如,在您的情况下:

docker run -e suffix=2 <image_name>
docker run-e后缀=2

这是一种很好且优雅的方法。我添加了ENV count 0和CMD./maker oneapp>/artifacts/oneapp_${suffix}。登录Dockerfile,但看到以下错误:root@onl-dev:/data/sept15/target docker#docker run-it target-e count=0 docker:来自守护程序的错误响应:oci运行时错误:exec:“-e”:在$PATH中找不到可执行文件。@Sweety yes:
docker run
需要一个映像名才能运行(从中创建容器)。您的命令没有图像名称。更改了顺序,它成功了,非常感谢!docker run-it-e count=0目标
docker run -e suffix=2 <image_name>