Docker容器手动执行Shell脚本正常,设为Entrypoint却报文件不存在错误
Docker容器启动报错的原因及解决方法
你的问题核心在于ENTRYPOINT的数组格式使用错误:
当你使用数组形式定义ENTRYPOINT时,Docker会将数组中的每个元素视为独立的命令或参数。你当前的写法:
ENTRYPOINT ["sh /var/lib/test/test.sh"]
Docker会把整个字符串sh /var/lib/test/test.sh当作一个可执行文件的路径去查找,而不是调用sh并把脚本路径作为参数传入,这就导致了“no such file or directory”的错误。
两种正确的写法:
- 拆分命令与参数为数组的独立元素:
ENTRYPOINT ["sh", "/var/lib/test/test.sh"]
- 使用shell格式(无需数组):
ENTRYPOINT sh /var/lib/test/test.sh
修改后重新构建镜像并运行,即可正常执行脚本。
内容的提问来源于stack exchange,提问作者Daigo
相关产品推荐
相关产品推荐

