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

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

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

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

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

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



답변

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

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

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


답변

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

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


답변

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

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

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


답변

컨텍스트 이해

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은 동일한 폴더에 없거나 적어도 찾기가 더 어려울 것입니다.


답변

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 version:17.09.0-ce.

아래 단계를 따릅니다.

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

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

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


답변

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