执行命令并在 docker run 命令中使用 -e 标志?

时间:2021-02-09 13:25:00

标签: linux docker

使用 docker,我可以在使用 docker run 命令时执行命令。就我而言,我必须在使用 docker run 命令时执行 bash 脚本:

docker run --rm --name XXXXX my_image /xxx/xxx/xxx/my_script.sh -s

我使用 -s 标志在我的脚本中使用一个选项。

现在,我想使用 -e 命令可用的 docker run 标志。目前,我使用这种风格的命令:

docker run -e XXXX-e XXXX --rm --name my_image /XXX/XXX/XXX/XXX -s

我想使用此命令,但要使用其他“布局”,例如:

docker run --rm --name XXXXX my_image /xxx/xxx/xxx/my_script.sh -s \
           -e XXXX \
           -e XXXX

但是如果我使用这个“布局”,我就不能在我的脚本中使用我的 -s 标志...

如果可能的话,有人告诉我怎么做吗?

谢谢!

1 个答案:

答案 0 :(得分:2)

您不能反转参数 - docker 本身的所有参数都必须在图像名称之前指定。这样做是为了可以毫无歧义地覆盖 CMD,就像您通过传递 /XXXX -s 所做的那样。

如果您使用的是 shell 脚本,您可以这样做:

args=(-e XXXX -e XXXX --rm --name XXXXXX)
docker run "${args[@]}" my_image /XXX/XXX/XXX/XXX -s

通过这种方式,可以清楚哪些参数被传递给 Docker,哪些是您的命令,并且您可以拆分您的行而不会使其混淆。