[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
명령이 있으면 실패합니다 . context
for 를 지정하는 방법은 여러 가지가 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
.
아래 단계를 따릅니다.
- Dockerfile 생성 및 Docker 이미지 생성을위한 추가 명령
- Dockfile을 생성 한 디렉토리로 이동합니다.
- 아래 명령 실행
$ sudo docker build -t ubuntu-test:latest .
문제를 해결하고 이미지가 성공적으로 생성되었습니다.
참고 : 빌드 명령은 Docker 버전과 사용중인 빌드 옵션에 따라 다릅니다. 🙂
답변
나에게 오류가 발생하는 이유 중 하나는 파일 이름이 파일 이름이 Dockerfile 인지 확인
했기 때문입니다.
그래서 나는 그것을 알아 냈습니다.