데몬의 오류 응답 : 현재 컨텍스트에 빌드 단계가 없습니다.


113

내가 여기에있는 코드를 사용하여, KVM 스위치와 컨테이너를 실행하려고했다 : https://github.com/jessfraz/dockerfiles/tree/master/kvm 나는 그것으로 cd'd 새로운 디렉토리를 생성하고 dockerfile을 생성 start.sh 파일. 빌드 명령을 내렸을 때 다음과 같은 오류 메시지가 출력되었습니다.

Docker 데몬에 빌드 컨텍스트 보내기 3.584kB 데몬에서 오류 응답 : 현재 컨텍스트에 빌드 단계가 없습니다.

나는 이것이 무엇을 의미하는지 전혀 모른다. 그리고 나는 대답을 구글 할 수 없었다. 어떤 도움이라도 대단히 감사하겠습니다.

답변:


211

dockerfile에 다음이 있습니까? FROM repo/image

첫 번째 줄로? 빌드중인 도커 이미지를 지정하는 것을 잊었을 때이 오류가 발생했습니다.

"소스 이미지"를 빌드하는 경우에도 FROM scratchdockerfile의 첫 번째 줄로 지정해야합니다 .


21
FROM 명령 전에 데비안 프런트 엔드에 ENV를 설정했기 때문에이 문제가 발생했습니다. 감사!
adamconkey

6
@adamconkey FROM 전에 ARG를 가질 수있는 특별한 경우가 있습니다. 그것이 FROM 전에 허용되는 유일한 것입니다. 여기에 대한 몇 가지 추가 정보입니다 : docs.docker.com/engine/reference/builder/...는
폴 Dejean

반드시 FIRST 라인 일 필요는 없습니다. 주석이 아닌 첫 번째 줄이어야합니다. 설명과 함께 공식 문서에 대한 링크에 대한 내 대답을 확인하십시오.
NoBrainer

@NoBrainer 컴퓨터 프로그래밍에서 "첫 번째 줄"이라는 용어는 거의 항상 주석이 아닌 첫 번째 줄을 나타냅니다.
Paul Dejean 19

@PaulDejean Docker는 "컴퓨터 프로그래밍"이 아니라 시스템 관리입니다. ;-)
NoBrainer

36

이것은 일반적으로 FROM 명령 전에 작성된 텍스트 때문에 발생합니다. dockerfile에서 주석을 제거하고 다시 빌드하십시오.

참고로 https://github.com/moby/buildkit/issues/164


1
이것은 정확히 내 문제였습니다. 어떤 이유로 내가 주석을 달 았던 것 조차이 오류를 던졌습니다. 나는 그것을 모두 제거하고 이제 잘 작동합니다.
jamescampbell

댓글로 인해 문제가 발생하지 않았습니다. 설명과 함께 공식 문서에 대한 링크에 대한 내 대답을 확인하십시오.
NoBrainer

19

이 메시지는 선언 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명령어는 새 빌드 단계를 초기화하고 후속 명령어를 위해 기본 이미지 를 설정합니다 . 따라서 valid 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.