docker :“build”에는 1 개의 인수가 필요합니다. 'docker build --help'를 참조하십시오


315

docker 웹 사이트에서 docker 이미지 작성 지침을 따르려고합니다.

https://docs.docker.com/examples/running_redis_service/

이것은 문서의 지침을 따르고이 Dockerfile을 사용하여 얻을 수있는 오류입니다.

FROM        ubuntu:14.04
RUN         apt-get update && apt-get install -y redis-server
EXPOSE      6379
ENTRYPOINT  ["/usr/bin/redis-server"]


sudo docker build -t myrepo/redis
docker: "build" requires 1 argument. See 'docker build --help'.

어떻게 해결합니까?

답변:


657

점을 추가해야합니다. 예를 들어 docker build -t mytag .로컬 디렉토리에서 Dockerfile을 사용한다는 것을 의미하며 docker 1.5를 사용하는 경우 Dockerfile을 다른 곳에 지정할 수 있습니다.-f, --file="" Name of the Dockerfile(Default is 'Dockerfile' at context root)


3
"docker build -t mytag"명령을 정확하게 표시해 주시겠습니까? 점을
보지 못함

6
@ user2915097 동의하지 않습니다. (도트)는 -f (-file) 옵션을 사용할 때. (도트)는 여전히 필수입니다.
andolsi 님이

5
. 빌드의 컨텍스트를 지정합니다
andolsi는

34
질문 인기는 불분명 한 docker 명령 구문이 얼마나되는지 보여줍니다 ... 개인적으로 나는 점이 문장의 끝을 의미한다고 생각했습니다 ...
Disappointed


31

다른 곳 (웹 페이지 또는 다른 파일)에서 빌드 명령을 복사 했습니까? 처음부터 입력 해보십시오.

AWS 자습서에서 빌드 명령을 복사하여 터미널에 붙여 넣은 후이 오류가 발생했습니다. 나를 미치게했다. 손으로 입력하면 효과가 있습니다! 자세히 살펴보고 이전에 실패한 명령을 살펴보면 "대시"문자가 다르다는 것을 알았습니다. "빼기 / 대시"키를 사용하여 직접 입력 한 경우보다 더 얇고 긴 문자입니다.

나쁜:

sudo docker build –t foo입니다.

좋은:

sudo docker build -t foo입니다.

차이가 보입니까? .. 잘라 붙여 넣기가 어렵습니다.


22

다음 명령을 사용하십시오

docker build -t mytag .

mytag와 dot 사이에는 공백이 있습니다. 이 점은 현재 작업 디렉토리를 나타냅니다.


17

여기에 이미지 설명을 입력하십시오하나의 공백을 포함하여 명령 끝에 점 (.)을 제공하십시오.

예:

명령 : docker build -t "blink : v1".

여기에서 "blink : v1"다음에 스페이스 다음에 dot (.)을 볼 수 있습니다.

그게 다야.


16

내 경우에는이 오류가 나는 여러 Gitlab의 ENV 변수를 통과 한 Gitlab CI 파이프 라인에서 일어나고 docker build--build-arg플래그.

밝혀 변수 중 하나에 공백이 있었다 오류의 원인이되었다. 파이프 라인 로그에 방금 표시되었으므로 찾기가 어려웠습니다 $VARIABLE_NAME.

공백이 올바르게 처리되도록 환경 변수를 인용하십시오.

다음에서 변경 :

--build-arg VARIABLE_NAME=$VARIABLE_NAME

에:

--build-arg VARIABLE_NAME="$VARIABLE_NAME"

1
내 인터넷 검색을 저장;)
Adiii

이것은 내가 가진 문제였습니다. 대단히 감사합니다!
파이

10


마지막에 DOT가 필요합니다 ...


예를 들어 :

$ docker build -t <your username>/node-web-app .

조금 숨겨져 있지만 .끝에 주의를 기울이면 ...


1
당신은 내 하루를 구했습니다. 감사합니다.
PhatHV

3

기본적으로 docker file 및 Dockerfile이라는 파일에서 docker 이미지를 작성할 수 있습니다. 도커 컨테이너에 필요한 명령 / 명령 세트가 있습니다. 아래 명령은 최신 태그가있는 이미지를 생성합니다 .Dockerfile은 해당 위치에 있어야합니다 (. 현재 direcotry를 의미합니다)

docker build . -t <image_name>:latest

파일 이름이 기본값이 아닌 경우 (Dockerfile) 동일한 Docker 파일 내용 인 경우 -f를 통해 Dockerfile을 지정할 수 있습니다.

FROM busybox
RUN echo "hello world"

2

이전 버전의 Docker에서는 다음 순서를 사용해야합니다.

docker build -t tag .

그리고 아닙니다

docker build . -t tag


1

PowerShell을 열고이 istruction을 따릅니다. 이 유형의 오류는 Windows SO에서 팁입니다. 명령 빌드를 사용할 때 옵션과 경로가 필요합니다.

Dockerfile에 경로를 지정하지 않았기 때문에 이러한 유형의 오류가 있습니다.

이 시도:

C:\Users\Daniele\app> docker build -t friendlyhello C:\Users\Daniele\app\
  1. friendlyhello는 컨테이너에게 할당 한 이름입니다.
  2. C : \ Users \ Daniele \ app \는 Dockerfile을 차단하는 경로입니다.

태그를 추가하려는 경우

C:\Users\Daniele\app> docker build -t friendlyhello:3.0 C:\Users\Daniele\app\

1

-t이미지 에 태그를 지정하려고 할 때이 문제가 발생하고 이름이 지정되지 않은 파일 Dockerfile(예 : 단순히 .경로를 사용 하지 않음)에서 이미지를 빌드하는 경우 다음과 같이 수행 할 수 있습니다.

docker build -t my_image -f my_dockerfile .

docker는 디렉토리를 매개 변수로, 파일 이름을 옵션으로 기대합니다.


0

내 문제는 Dockerfile.txt를 Unix 실행 파일로 변환해야한다는 것입니다. 일단 그 오류가 사라졌습니다.

이 작업을 수행하기 전에 .txt 부분을 제거해야 할 수도 있지만 Mac에서는 터미널로 이동하여 Dockerfile이있는 디렉토리와 유형으로 cd하십시오

chmod +x "Dockerfile"

그런 다음 파일을 Unix 실행 파일로 변환 한 다음 Docker 빌드 명령으로 실행할 수 있습니다.


0

다음 명령이 나를 위해 일했습니다. Docker 파일은 my-app-master 폴더에 있습니다.

docker build -f my-app-master / Dockerfile -t my-app-master.


-4

도커 빌드 명령 형식

Powershell에서 : Dockerfile에 경로를 지정하지 않았기 때문에 이러한 유형의 오류가 있습니다.

이 시도:

$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt

friendlyhello는 컨테이너에 할당하고 이름을 추가하는 이름입니다 .

-f C : \ TestDockerApp \ Dockerfile.txt- 빌드 명령에 매개 변수 또는 태그가 필요하므로 태그를 추가하려는 경우-DockerFile은 텍스트 문서이므로 확장명 .txt를 명시 적으로 추가하십시오.

**이 형식을 사용해보십시오 :

$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt .**

1
제공 한 명령이 동일한 오류로 실패합니다. 빌드 컨텍스트를 인수로 포함해야합니다. 종종 .현재 디렉토리가 빌드 컨텍스트로 도커 엔진에 전송되어야 함을 표시 하기 위해 a 를 나타냅니다.
BMitch
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.