重写的docker入口点的参数

在Docker运行命令中使用–entrypoint运行镜像时,可以修改Docker镜像的入口点。 我想在启动时使用一些参数在映像中启动一个脚本。 我可以让docker在启动时运行脚本

docker run -it --rm --entrypoint /my/script/path.sh my-docker-image 

如何将parameter passing给我的脚本?

请注意,我无法修改与此图像创build的原始docker文件。 我也不想以这个图像为基础创build另一个docker图像。

当你的Docker镜像有一个ENTRYPOINT ,可以通过一个Dockerfile或者在命令行上用--entrypoint ,镜像名后的--entrypoint docker run命令行上的任何参数都会被传递给入口点脚本。

例如,如果我在myscript.sh有这样的脚本:

 #!/bin/sh echo "Here are my arguments: $@" 

我像这样运行一个图像:

 $ chmod 755 myscript.sh $ docker run -it --rm -v $PWD/myscript.sh:/myscript.sh \ --entrypoint /myscript.sh alpine one two three 

我会看到输出:

 Here are my arguments: one two three 

…容器将退出,因为入口点脚本没有安排其他任何事情。 你可以用任何其他的Docker镜像replacealpine这个(这是最小的Docker镜像)。 例如:

 $ docker run -it --rm -v $PWD/myscript.sh:/myscript.sh \ --entrypoint /myscript.sh centos one two three Here are my arguments: one two three 

请注意,在此示例中,我使用-v参数将主机上的脚本安装到容器中,因为我不想为此示例创build新图像。 相反,你可以明显地把一个类似的脚本烧成你的图片。

有关详细信息,请阅读ENTRYPOINT文档。