Docker 镜像错误:“/bin/sh: 1: [python,: not found”

Posted

技术标签:

【中文标题】Docker 镜像错误:“/bin/sh: 1: [python,: not found”【英文标题】:Docker image error: "/bin/sh: 1: [python,: not found" 【发布时间】:2015-12-18 23:18:10 【问题描述】:

我正在基于标准 Ubuntu 14.04 映像构建一个新的 Docker 映像。

这是我的 Dockerfile

FROM ubuntu:14.04
RUN apt-get update -y
RUN apt-get install -y nginx git python-setuptools python-dev
RUN easy_install pip
ADD . /code
WORKDIR /code
RUN pip install -r requirements.txt # only 'django' for now
ENV projectname myproject
EXPOSE 80 8000
WORKDIR $projectname
CMD ['python', 'manage.py', 'runserver', '0.0.0.0:80']

当我尝试运行此映像时,我收到此错误...

/bin/sh: 1: [python,: 未找到

但如果我在运行映像时打开 shell,运行 python 会按预期打开交互式提示。

为什么我不能在 Dockerfile 中通过CMD 调用python

【问题讨论】:

您是否尝试在 CMD 中使用 " 而不是 ' 你需要先安装python @AleksandrKovalev Facepalm。谢谢。 @E-ebolavirus 不,这不是问题所在。 Python 已安装。我可以通过将单引号更改为双引号来很好地调用它。 【参考方案1】:

我有同样的错误。但就我而言,这是命令中的语法错误。 我缺少逗号“,”CMD ["python" "app.py"] 而不是CMD ["python", "app.py"]

在这种情况下,验证 yaml 文件格式会有所帮助。可以使用任何在线yaml validator。

【讨论】:

【参考方案2】:

我有类似的问题,但在我的情况下,docker run 命令中没有任何'" 字符。 但是我找到了解决该问题的解决方案,并且将来可能会在类似情况下对您有所帮助:

    从 Dockerfile 中清除所有不必要的空白字符 从此 Dockerfile 中清除所有缓存的图像 构建并运行新映像

如果你不清除缓存的图像,docker 将使用带有一些疯狂空白字符的缓存图像,这与线程主题创建的错误消息相同。

【讨论】:

你为我节省了很多时间【参考方案3】:

我通过更改解决了我在 Mac 上的问题

CMD ["python", "app.py"]

CMD python app.py

【讨论】:

【参考方案4】:

在 CMD 中使用 " 而不是 '。 (Documentation)

【讨论】:

docker-compose build 也是必要的,在更改文件后。

以上是关于Docker 镜像错误:“/bin/sh: 1: [python,: not found”的主要内容,如果未能解决你的问题,请参考以下文章

docker拉取镜像失败,提示端口错误

/bin/sh: 1: 语法错误:反引号替换中的 EOF

Heroku:错误 - /bin/sh:1:npm:部署到 Heroku 时未找到

GAE 错误 :- /bin/sh: 1: exec: gunicorn: not found

错误记录编译 Linux 内核报错 ( /bin/sh: 1: bison: not found )

面对这个错误文件构建docker镜像dlib