gpt4 book ai didi

docker - 覆盖的docker入口点的参数

转载 作者:行者123 更新时间:2023-12-02 21:24:03 25 4
gpt4 key购买 nike

可以在运行docker run命令时使用--entrypoint修改镜像的入口点。我想在启动时使用一些参数在镜像中启动脚本。我可以让docker在启动时以如下方式运行脚本

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

如何将参数传递给脚本?

请注意,我无法修改用于创建该镜像的原始dockerfile。我也不想以该镜像为基础创建另一个docker镜像。

最佳答案

当您的Docker镜像具有ENTRYPOINT时(通过Dockerfile或在命令行中提供--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

...然后容器将退出,因为入口点脚本未安排执行其他任何操作。您可以将此处的 alpine(这是一个最小的docker镜像)替换为具有 /bin/sh的任何其他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参数将主机上的脚本安装到容器中,因为在本示例中,我不想创建新镜像。您显然可以将类似的脚本烘烤到图像中。

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

关于docker - 覆盖的docker入口点的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41864754/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com