Docker Entrypoint脚本无法接收docker run传入参数问题咨询
Docker Entrypoint脚本无法接收docker run参数的解决方法
问题根源
你使用的是shell格式的ENTRYPOINT指令(ENTRYPOINT /entrypoint.sh),这种写法会让Docker通过/bin/sh -c "/entrypoint.sh"启动进程,此时docker run传入的参数不会传递给你的脚本,而是被shell进程忽略,导致脚本中的$@为空。
修复步骤
将Dockerfile中的ENTRYPOINT改为exec格式(数组形式):
COPY ./entrypoint.sh /entrypoint.sh RUN chmod +x /entrypoint.sh ENTRYPOINT ["/entrypoint.sh"]
验证结果
重新构建镜像后执行原命令:
docker run given/image:latest "A B C"
即可得到预期输出:
I received: A B C
补充说明
如果你的entrypoint脚本最终需要启动主进程,建议在脚本中使用exec执行主命令,这样可以避免创建额外的shell进程,同时保证信号(如SIGTERM)能正确传递给主进程。示例:
#!/bin/bash echo "I received:" "$@" exec your-main-command "$@"
内容的提问来源于stack exchange,提问作者u-ways
相关产品推荐
相关产品推荐

