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

Passing Different Arguments When Running Docker Image Multiple Times

我需要给出一个参数,而 运行 Docker 图像将是 0-3 的数字。

Docker文件有以下内容:

WORKDIR "mydir/build"
CMD ./maker oneapp > /artifacts/oneapp_.log ; ./maker twoapp > /artifacts/twoapp_.log ; ./maker -j13 threeapp > /artifacts/threeapp_.log

我将 运行 多次使用相同的 Docker 图像,因此我需要将日志保存在 /artifacts 中并酌情附加 _0、_1、_2、_3。

我尝试将其保留在 Docker 文件中,但不想在 运行 docker.

时将此整行作为参数传递

ENTRYPOINT ["/bin/bash"]

./maker oneapp > /artifacts/oneapp_.log ; ./maker twoapp > /artifacts/twoapp_.log ; ./maker -j13 threeapp > /artifacts/threeapp_.log

这可以吗?我需要在 Docker 文件中修改什么才能执行我想要的操作?

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

声明 ENV in your Dockerfile

ENV suffix 0
./maker oneapp > /artifacts/oneapp_${suffix}.log

The environment variables set using ENV will persist when a container is run from the resulting image.
You can view the values using docker inspect, and change them using docker run --env <key>=<value>.

这样,您可以声明 ENV on docker run,并从其在 运行 容器中的值中获益。

the operator can set any environment variable in the container by using one or more -e flags, even overriding those mentioned above, or already defined by the developer with a Dockerfile ENV:

以你的情况为例:

docker run -e suffix=2 <image_name>