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

Sha*_*512 10 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"]
Run Code Online (Sandbox Code Playgroud)

当我在powershell中运行它时

docker build -t friendlybuild .
Run Code Online (Sandbox Code Playgroud)

但结果是这样:

Error response from daemon: Dockerfile parse error line 1: unknown instruction: #
Run Code Online (Sandbox Code Playgroud)

喜欢它不起作用

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

Jöc*_*ker 19

我忘了有一个空格 ENTRYPOINT["java",

它应该是 ENTRYPOINT ["java",


Sha*_*512 8

通过删除dockerfile并使用记事本而不是Visual Code创建它来解决


小智 8

我只是测试了相同,默认情况下VSCode似乎用UTF-16 LE编码保存Dockerfile.

将文件重新保存为UTF-8允许docker build无错误地运行.


jbr*_*ahy 7

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

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

我看到的错误是:

$ 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"]
Run Code Online (Sandbox Code Playgroud)

我花了一段时间才弄明白,直到我阅读了上面的一些评论并查看了行格式并意识到“org.spark.docker.demo.DockerMultilayerPerceptronClassifier”] 在它自己的一行上。一旦我在一切正常之前删除了换行符。我认为解析器会忽略它。