Docker 빌드는 "컨텍스트를 준비 할 수 없음 : 컨텍스트는 디렉토리 여야합니다 : / Users / tempUser / git / docker / Dockerfile"을 제공합니다.


92

나는이 Dockerfile만든다는 생각되는 Ubuntu이미지를. 하지만 내가 달릴 때마다

docker build -t ubuntu-test:latest ./Dockerfile

콘솔에 다음 오류가 표시됩니다.

컨텍스트를 준비 할 수 없음 : 컨텍스트는 디렉토리 여야합니다. / Users / tempUser / git / docker / Dockerfile

저는 Mac OsX를 사용하고 있습니다. 나도 노력했다 sudo. 작동하지 않습니다.

답변:


142

대신 디렉토리 를 가리켜 야합니다 . dockerfile을 지정하지 않아야합니다.

docker build -t ubuntu-test:latest .작동 합니다 .

docker build -t ubuntu-test:latest ./Dockerfile작동하지 않습니다 .


왜 이래? 파일 자체를 쉽게 가리킬 수있을 때 dir을 가리킬 필요가있는 것이 이상해 보입니다
Monica Heddneck

72

-f옵션으로 도커 빌드를 실행할 수도 있습니다.

docker build -t ubuntu-test:latest -f Dockerfile.custom .


1
이것은 나를 위해 일했습니다. 제 경우에 Dockerfile 이름은 Dockerfile-abcd 였으므로 실행해야했습니다.docker build -t my-custom-name -f /path_to_my_docker_file/Dockerfile-abcd .
niranjan harpale

17

Dockerfile빌드시기 를 지정하려면 다음을 사용할 수 있습니다.

docker build -t ubuntu-test:latest - < /path/to/your/Dockerfile

그러나 상대 경로에 의존하는 명령이 ADD있거나 COPY명령이 있으면 실패합니다 . contextfor 를 지정하는 방법은 여러 가지가 docker build있습니다 . 자세한 내용 은 docker 빌드 문서 를 참조하세요.


이 위해 한 우분투 12.04 : docker build -t ubuntu:12.04 - < Dockerfile당신은의 루트에 있어야합니다 Dockerfile
도미닉 Motuka

15

컨텍스트 이해

docker build명령

도커 빌드 명령의 기본 구문은 다음과 같습니다.

docker build -t imagename:imagetag context_dir

문맥

컨텍스트는 디렉토리이며 docker 빌드 프로세스가 볼 내용을 결정합니다. Dockerfile의 관점 context_dir/mydir/myfile에서 파일 시스템의 모든 파일 /mydir/myfile은 Dockerfile에 있으므로 빌드 프로세스 중에도됩니다.

도커 파일

dockerfile이 호출 Dockerfile되고 컨텍스트에 있으면 명명 규칙에 의해 암시 적으로 발견됩니다. 이는 일반적으로 모든 도커 컨테이너에서 Dockerfile을 즉시 찾을 수 있다는 것을 의미하기 때문에 좋습니다.

"/ tmp / mydockerfile" -f과 같이 다른 이름을 사용하고 싶다면 다음과 같이 사용할 수 있습니다 .

docker build -t imagename:imagetag -f /tmp/mydockerfile context_dir

그러나 dockerfile은 동일한 폴더에 없거나 적어도 찾기가 더 어려울 것입니다.


2

Docker 빌드가 실행될 때마다 docker는 이미지 이름이 무엇인지 알고 싶어하므로 -t :를 전달해야합니다. 이제 Dockerfile이있는 동일한 디렉토리에 있는지 확인하고

docker build -t <image_name>:<version> .docker build -t my_apache:latest .당신의 Dockerfile 달리 -f 플래그와 Dockerfile을 통과 같은 디렉토리에있는 가정.

docker build -t my_apache:latest -f ~/Users/documents/myapache/Dockerfile


두 번째 명령을 실행하려면 약간 변경해야했습니다. docker build -t my_apache:latest -f ~/Users/documents/myapache/Dockerfile( .끝에 a 추가에 유의하십시오 )
Josh

2

나는 같은 문제에 직면 해있다. 나는 docker version:17.09.0-ce.

아래 단계를 따릅니다.

  1. Dockerfile 생성 및 Docker 이미지 생성을위한 추가 명령
  2. Dockfile을 생성 한 디렉토리로 이동합니다.
  3. 아래 명령 실행 $ sudo docker build -t ubuntu-test:latest .

문제를 해결하고 이미지가 성공적으로 생성되었습니다.

참고 : 빌드 명령은 Docker 버전과 사용중인 빌드 옵션에 따라 다릅니다. :)


1

나에게 오류가 발생하는 이유 중 하나는 파일 이름이 파일 이름이 Dockerfile 인지 확인 했기 때문입니다. 그래서 나는 그것을 알아 냈습니다.

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.