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


111

我正在尝试使用在这里找到的代码使用kvm运行一个容器:https : //github.com/jessfraz/dockerfiles/tree/master/kvm start.sh文件。当我下达命令进行构建时,它输出以下错误消息:

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

我不知道这是什么意思,我无法在Google上找到答案。任何帮助将不胜感激。

Answers:


205

您的dockerfile是否具有: FROM repo/image

作为第一行?当我忘记指定要从中构建的docker映像时,出现此错误。

即使您正在构建“源映像”,您仍需要将其指定FROM scratch为dockerfile的第一行。


20
我有这个问题,因为我在FROM命令之前为debian前端设置了ENV。谢谢!
adamconkey

6
@adamconkey是一种特殊情况,允许您在FROM之前使用ARG。那是在FROM之前唯一允许的事情。以下是关于一些详细信息:docs.docker.com/engine/reference/builder/...
保罗Dejean

不一定是第一行。它必须成为第一条非注释行。查看我的回答以获取带有解释的官方文档链接。
NoBrainer

@NoBrainer在计算机编程中,术语“第一行”几乎总是指第一条非注释行。
Paul Dejean

@PaulDejean Docker是系统管理,而不是“计算机编程”。;-)
NoBrainer

34

通常由于在FROM命令之前写的文本而发生这种情况。尝试删除dockerfile中的注释并重新构建。

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


1
这正是我的问题,出于某种原因,即使我已经注释掉的东西也导致它引发此错误。我删除了所有内容,现在可以正常工作。
jamescampbell

评论没有引起我任何问题。查看我的回答以获取带有解释的官方文档链接。
NoBrainer

17

当您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
...

要解决此问题,请交换声明,以便在之后设置任何环境变量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
...


12

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


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.