Docker run指定--entrypoint执行带参脚本失败,求正确语法
Docker --entrypoint 语法问题分析
你的错误在于把带参数的完整命令直接传给了--entrypoint,Docker会将整个字符串"/bin/sh -c 'my-script.sh arg1 arg2'"当作一个单独的可执行文件路径去查找,自然找不到对应的文件,所以报错。
--entrypoint的作用是指定容器启动时执行的单个可执行程序,程序的参数需要放在镜像名后面作为容器命令传递,而不是写在--entrypoint里。
正确的写法有两种:
- 用
sh作为entrypoint,后面跟命令参数:
docker run --entrypoint sh my-image:latest -c 'my-script.sh arg1 arg2'
- 用完整路径的
/bin/sh:
docker run --entrypoint /bin/sh my-image:latest -c 'my-script.sh arg1 arg2'
这样Docker会先启动sh进程,再将-c 'my-script.sh arg1 arg2'作为参数传给sh,最终执行你需要的脚本命令,和你进入容器后手动执行的逻辑一致。
内容的提问来源于stack exchange,提问作者pkaramol
相关产品推荐
相关产品推荐

