来自守护程序的错误响应:当前上下文中没有构建阶段

use*_*626 56 kvm docker

我试图用kvm运行一个容器,使用我在这里找到的代码:https://github.com/jessfraz/dockerfiles/tree/master/kvm 我创建了一个新目录,cd了进去并创建了dockerfile和start.sh文件.当我下令构建时,它输出了以下错误消息:

向Docker守护程序发送构建上下文3.584kB来自守护程序的错误响应:当前上下文中没有构建阶段

我不知道这意味着什么,我无法谷歌答案.任何帮助将不胜感激.

Pau*_*ean 125

你的dockerfile有一个: FROM repo/image

作为第一线?当我忘记指定我正在构建的docker镜像时,我收到此错误.

即使您正在构建"源图像",仍需要指定FROM scratchdockerfile的第一行.

  • 我遇到了这个问题,因为我在FROM命令之前为debian前端设置了ENV.谢谢! (8认同)
  • @adamconkey有一个特殊情况,你可以在FROM之前拥有ARG.这是在FROM之前唯一允许的事情.以下是有关它的更多信息:https://docs.docker.com/engine/reference/builder/#understand-how-arg-and-from-interact (3认同)

Yon*_*sen 24

这通常是因为在FROM命令之前写入的文本.尝试删除dockerfile中的注释并重新构建.

供参考https://github.com/moby/buildkit/issues/164


NoB*_*ner 22

根据docs.docker.com上的文档,Dockerfile的第一个非注释行必须是该FROM行。引用文档:

FROM指令初始化一个新的构建阶段并为后续指令设置基础映像。因此,有效Dockerfile必须以FROM指令开头。


Cur*_*her 16

我遇到过同样的问题!帮助我的是FROM命令作为文件中的第一个命令

MAINTAINER your name "your@email.com"
FROM dockerimagename
Run Code Online (Sandbox Code Playgroud)

FROM dockerimagename
MAINTAINER your name "your@email.com"
Run Code Online (Sandbox Code Playgroud)

  • 顺便说一句,请注意,“MAINTAINER”关键字多年来已被弃用。 (2认同)

use*_*626 12

问题已解决。当我去dockerfile编辑代码时,我注意到我不小心取消了第一行的注释。愚蠢的错误,我知道。谢谢你们的帮助。


Cha*_*lie 8

当您ENV在声明之前声明环境变量()时,将显示此消息FROM

例如:

# Define variables.
ARG PORT
ENV SERVER_PORT=$PORT

# Install minimal Python 3.
FROM python:3.7-alpine

# Install Python requirements.
COPY requirements.txt /
RUN pip install -r /requirements.txt

# Copy app source code.
COPY src/ /app
...
Run Code Online (Sandbox Code Playgroud)

要解决此问题,请交换声明,以便在之后设置任何环境变量FROM

# Install minimal Python 3.
FROM python:3.7-alpine

# Define variables.
ARG PORT
ENV SERVER_PORT=${PORT}

# Install Python requirements.
COPY requirements.txt /
RUN pip install -r /requirements.txt

# Copy app source code.
COPY src/ /app
...
Run Code Online (Sandbox Code Playgroud)


sim*_*Pod 7

这是我的情况,因为我ENV之前已经指定过FROM,并且正如已经提到的,FROM应该是 Dockerfile 中的第一个表达式。

由于此 PR https://github.com/moby/moby/pull/31352ARG ,您可以在之前指定FROM哪个可能是适合您的替代方案。

所以我改变了

ENV MY_VAR 1
FROM ...
Run Code Online (Sandbox Code Playgroud)

ARG MY_VAR=1
FROM ...
Run Code Online (Sandbox Code Playgroud)

顺便说一句,您可以在这里了解 ARG 与 ENV 的区别https://vsupalov.com/docker-arg-vs-env/