我在Dockerfile
中运行perl脚本,我想在运行docker image(container)时将动态命令行参数传递给perl脚本。
例如: CMD perl test.pl <args>
。我是Docker btw的新手。
是否有可能将动态值传递给docker container lilke
docker run <image name> <args>
?
答案 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发布。