如何将动态值传递给Docker容器?

时间:2018-06-12 10:38:23

标签: docker dockerfile

我在Dockerfile中运行perl脚本,我想在运行docker image(container)时将动态命令行参数传递给perl脚本。 例如: CMD perl test.pl <args>。我是Docker btw的新手。

是否有可能将动态值传递给docker container lilke docker run <image name> <args>

2 个答案:

答案 0 :(得分:2)

我不确定您是否可以使用CMD执行此操作,但如果您只想使用一些传入的参数执行perl脚本,请使用ENTRYPOINT

ENTRYPOINT ["perl", "test.pl"]
CMD ["default-arg"]

使用以下命令运行容器:

docker -run <image-name> overriding-arg

答案 1 :(得分:1)

您可以使用Entrypoint脚本:

  

$ docker run [OPTIONS] IMAGE [:TAG | @DIGEST] [COMMAND] [ARG ...]

  

如果图像还指定了ENTRYPOINT,那么CMD或COMMAND将作为参数附加到ENTRYPOINT。

所以取决于你的Dockerfile,你有这样的东西(python示例应用程序):

FROM jfloff/alpine-python:3.6

# add entrypoint script
USER root
COPY start.sh /
RUN chmod a+x /start.sh

ENTRYPOINT ["/start.sh"]
CMD ["arg1"]

start.sh

#!/bin/bash

echo $1

# don't exit
/usr/bin/tail -f /dev/null

现在您可以执行以下操作:

15:19 $ docker run f49b567f05f1 Hello
Hello
15:21 $ docker run f49b567f05f1
arg1

现在,如果您的脚本设置为接受这些参数,您应该可以根据需要运行它。附加了Docker的引用,在this中搜索“Overriding Dockerfile image defaults”,然后查看 CMD 部分。

或查看this发布。