如何使用命令将参数传递给具有python入口点脚本的docker容器?

dpo*_*ter 27 python docker

所以我有一个带有python脚本的docker镜像作为入口点,我想在运行容器时将参数传递给python脚本.我试图使用sys.argv和sys.stdin来获取参数,但两者都没有用.我正在尝试使用以下命令运行容器:

docker run image argument
Run Code Online (Sandbox Code Playgroud)

koj*_*iro 31

这取决于入口点的设置方式.如果它是以"exec形式"设置的,那么你只需在docker run命令后传递参数,如下所示:

docker run image -a -b -c
Run Code Online (Sandbox Code Playgroud)

如果它是以"shell形式"设置的,那么你不得不重写入口点.

$ docker run --entrypoint echo image hi
hi
Run Code Online (Sandbox Code Playgroud)

您可以使用以下方式查看表单docker inspect.如果入口点似乎开头/bin/sh -c,则它是shell形式.

参考文献:

  • 为了快速参考:**shell表单**是`ENTRYPOINT foo --bar`而**exec表单**是`ENTRYPOINT ["foo"," - bar"]` (8认同)
  • 似乎(可能是由于更新的docker版本)这不依赖于它是以shell形式还是以exec形式指定的.根据https://docs.docker.com/engine/reference/builder/#entrypoint`在脚本运行<image>的命令行参数将附加在exec形式ENTRYPOINT中的所有元素之后,并将覆盖使用CMD指定的所有元素.`,如果你想稍后添加一些内容,请使用ENTRYPOINT,如果你想稍后重写它,请使用CMD. (2认同)