デーモンからのエラー応答:現在のコンテキストにビルドステージがありません


111

ここで見つけたコードを使用して、kvmでコンテナーを実行しようとしました:https//github.com/jessfraz/dockerfiles/tree/master/kvm 新しいディレクトリを作成し、それにcdして、dockerfileを作成しました。 start.shファイル。ビルドを注文すると、次のエラーメッセージが出力されました。

Dockerデーモン3.584kBへのビルドコンテキストの送信デーモンからのエラー応答:現在のコンテキストにビルドステージがありません

私はこれが何を意味するのか分かりません、そして私は答えをグーグルで検索することができませんでした。どんな助けでも大歓迎です。

回答:


206

dockerfileには次のものがありますか? FROM repo/image

最初の行として?ビルド元のDockerイメージを指定するのを忘れたときにこのエラーが発生しました。

「ソースイメージ」を作成している場合でもFROM scratch、dockerfileの最初の行として指定する必要があります。


21
FROMコマンドの前にDebianフロントエンドにENVを設定していたため、この問題が発生しました。ありがとう!
adamconkey

6
@adamconkeyFROMの前にARGを使用できる特別な場合があります。FROMの前に許可されているのはそれだけです。これについての詳細は次のとおり
Paul Dejean

必ずしも最初の行ではありません。コメント以外の最初の行になる必要があります。説明付きの公式ドキュメントへのリンクについては、私の回答を確認してください。
NoBrainer

@NoBrainerコンピュータプログラミングでは、「最初の行」という用語は、ほとんどの場合、最初の非コメント行を指します。
PaulDejean19年

@PaulDejean Dockerはシステム管理であり、「コンピュータープログラミング」ではありません。;-)
NoBrainer

36

これは通常、FROMコマンドの前に書き込まれるテキストが原因で発生します。dockerfileのコメントを削除して、もう一度ビルドしてみてください。

参考までにhttps://github.com/moby/buildkit/issues/164


1
これはまさに私の問題でした。何らかの理由で、私がコメントしたものでさえ、このエラーをスローさせていました。私はそれをすべて削除し、今は正常に動作しています。
jamescampbell 2018年

コメントは私に何の問題も引き起こしていません。説明付きの公式ドキュメントへのリンクについては、私の回答を確認してください。
NoBrainer

18

このメッセージは、を宣言する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
...

16

docs.docker.comドキュメントによると、Dockerfileの最初の非コメント行はそのFROM行である必要があります。ドキュメントを引用するには:

このFROM命令は、新しいビルドステージを初期化し、後続の命令のベースイメージを設定します。そのため、有効なものDockerfileFROM命令で始まる必要があります。


使用のいずれかFROM anyBaseImageまたは使用FROM scratch
ahmednabil88

12

問題は解決しました。dockerfileにアクセスしてコードを編集したところ、誤って最初の行のコメントを外してしまったことに気付きました。ばかげた間違い、私は知っています。助けてくれてありがとう。


6

私は同じ問題を抱えていました!私を助けたのは、ファイルの最初のコマンドとしてコマンドを使用することFROMでした。

悪い

MAINTAINER your name "your@email.com"
FROM dockerimagename

良い

FROM dockerimagename
MAINTAINER your name "your@email.com"
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.