运行 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 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>
我需要给出一个参数,而 运行 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 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 usingdocker inspect
, and change them usingdocker 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>