来自守护程序的错误响应:Dockerfile解析错误第1行:未知指令:#

时间:2018-03-03 20:32:17

标签: docker

我是码头工人的新手,并试图学习它。 我遵循本教程:https://docs.docker.com/get-started/part2/#apppy

所以我在Windows上安装了Docker。 创建了3个文件,app.py,Dockefile和requirements.txt

我的docker文件看起来像这样

# Use an official Python runtime as a parent image
FROM python:2.7-slim

# Set the working directory to /app
WORKDIR /app

# Copy the current directory contents into the container at /app
ADD . /app

# Install any needed packages specified in requirements.txt
RUN pip install --trusted-host pypi.python.org -r requirements.txt

# Make port 80 available to the world outside this container
EXPOSE 80

# Define environment variable
ENV NAME World
CMD ["python", "app.py"]

当我在powershell中运行它时

docker build -t friendlybuild .

但结果它给出了这个:

Error response from daemon: Dockerfile parse error line 1: unknown instruction: #

喜欢它不起作用

我不知道它为什么不起作用

10 个答案:

答案 0 :(得分:8)

我刚刚测试了相同的内容,默认情况下VSCode似乎用UTF-16 LE编码保存了Dockerfile。

以UTF-8重新保存文件允许docker build无错误地运行。

答案 1 :(得分:5)

通过删除dockerfile并使用Notepad而不是Visual Code

创建它来解决

答案 2 :(得分:1)

我在Dockerfile中有一个额外的换行符。直到我阅读其中一些评论并意识到这可能是一个问题之前,它甚至都没有注意到。本来我的文件是:

FROM openjdk:8
COPY . /usr/src/Main
WORKDIR /usr/src/Main
ENTRYPOINT ["java", "-Xmx700m","-classpath", ".:./resources/:./lib/*",
"org.spark.docker.demo.DockerMultilayerPerceptronClassifier"]

我看到的错误是:

$ docker build -t docker-classifier .                                                                                                                                         
Sending build context to Docker daemon  248.3MB
Error response from daemon: Dockerfile parse error line 5: unknown instruction: "ORG.SPARK.DOCKER.DEMO.DOCKERMULTILAYERPERCEPTRONCLASSIFIER"]

花点时间弄清楚它,直到我阅读了上面的一些评论,并仔细研究了行格式并意识到“ org.spark.docker.demo.DockerMultilayerPerceptronClassifier”本身就行了。一旦我删除了换行符,一切正常。我以为解析器会忽略它。

答案 3 :(得分:0)

在运行时,在文件开头附加一些文本。删除了在终端中使用vi并正常工作的程序。

答案 4 :(得分:0)

我以intellij的想法运行docker compose,通过删除docker父文件夹名称中的数字来解决此问题。

答案 5 :(得分:0)

从Windows执行此操作时,必须确保在为Linux(Dockerfile)而非Windows(LF)配置的CRLF中有换行符。

答案 6 :(得分:0)

我忘了在ENTRYPOINT["java",中留有空格

应为ENTRYPOINT ["java",

答案 7 :(得分:0)

在使用nano的控制台项目的Google Cloud Platform中,该命令对我有用
1º-nano
2-

# The Dockerfile defines the image's environment
# Import Python runtime and set up working directory
FROM python:2.7-alpine
WORKDIR /app
ADD . /app

# Install any necessary dependencies
RUN pip install -r requirements.txt

# Open port 80 for serving the webpage
EXPOSE 80

# Run app.py when the container launches
CMD ["python", "app.py"]

保存文件...

答案 8 :(得分:0)

在Docker上进行React应用设置时,我遇到了这个问题。

将构建上下文发送到Docker守护程序1.143MB

守护程序的错误响应:Dockerfile解析错误行1:未知指令:+#

这是我解决的方式

问题是我还有一个名为Dockerfile的文件(大写字母为 D ),其中包含一些说明,并且与原始的dockerfile(较低 d )。

我通过删除Dockerfile并运行以下命令来解决此问题:

docker build t myapp:latest .

而是从dockerfile构建docker映像。

仅此而已。

我希望这会有所帮助

答案 9 :(得分:0)

对于遇到此问题的 Mac 用户:

只需使用 Python IDLE 编辑/创建 Dockerfile 并删除扩展。