我正在尝试使用在这里找到的代码使用kvm运行一个容器:https : //github.com/jessfraz/dockerfiles/tree/master/kvm start.sh文件。当我下达命令进行构建时,它输出以下错误消息:
将构建上下文发送到Docker守护程序3.584kB守护程序的错误响应:当前上下文中没有构建阶段
我不知道这是什么意思,我无法在Google上找到答案。任何帮助将不胜感激。
Answers:
您的dockerfile是否具有: FROM repo/image
作为第一行?当我忘记指定要从中构建的docker映像时,出现此错误。
即使您正在构建“源映像”,您仍需要将其指定FROM scratch
为dockerfile的第一行。
通常由于在FROM命令之前写的文本而发生这种情况。尝试删除dockerfile中的注释并重新构建。
当您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
...
根据docs.docker.com上的文档,Dockerfile的第一个非注释行必须是该FROM
行。引用文档:
该
FROM
指令初始化一个新的构建阶段,并为后续指令设置基本映像。因此,有效的Dockerfile
必须从FROM
指令开始。
FROM anyBaseImage
还是使用FROM scratch
我遇到过同样的问题!帮助我的是将FROM
命令作为文件中的第一个命令:
坏:
MAINTAINER your name "your@email.com"
FROM dockerimagename
好:
FROM dockerimagename
MAINTAINER your name "your@email.com"