[docker] Docker : 컨텍스트를 준비 할 수 없음 : Dockerfile 경로에서 심볼릭 링크를 평가할 수 없음 : GetFileAttributesEx

오늘 Windows 10 64 비트 용 Docker Toolbox를 다운로드했습니다. 튜토리얼을 진행하겠습니다. Dockerfile을 사용하여 이미지를 만들려고 할 때 다음 오류가 나타납니다.

단계 :

  • Docker Quickstart 터미널을 시작했습니다.
  • 그것을 만든 후 testdocker.
  • “나만의 이미지 만들기”웹 링크에 설명 된대로 Dockerfile 준비
  • 아래 명령을 실행

docker build -t docker-whale .

Error: $ docker build -t docker-whale .

unable to prepare context: unable to evaluate symlinks in Dockerfile path: GetFileAttributesEx C:\Users\Villanueva\Test\testdocker\Dockerfile: The system cannot find the file specified.

BTW : https://github.com/docker/docker/issues/14339에서 언급 한 여러 옵션을 시도했습니다.

    $ docker info
    Containers: 4
     Running: 0
     Paused: 0
     Stopped: 4
    Images: 2
    Server Version: 1.10.1
    Storage Driver: aufs
     Root Dir: /mnt/sda1/var/lib/docker/aufs
     Backing Filesystem: extfs
     Dirs: 20
     Dirperm1 Supported: true
    Execution Driver: native-0.2
    Logging Driver: json-file
    Plugins:
     Volume: local
     Network: bridge null host
    Kernel Version: 4.1.17-boot2docker
    Operating System: Boot2Docker 1.10.1 (TCL 6.4.1); master : b03e158 - Thu Feb 11 22:34:01 UTC 2016
    OSType: linux
    Architecture: x86_64
    CPUs: 1
    Total Memory: 996.2 MiB
    Name: default
    ID: C7DS:CIAJ:FTSN:PCGD:ZW25:MQNG:H3HK:KRJL:G6FC:VPRW:SEWW:KP7B
    Debug mode (server): true
     File Descriptors: 32
     Goroutines: 44
     System Time: 2016-02-19T17:37:37.706076803Z
     EventsListeners: 0
     Init SHA1:
     Init Path: /usr/local/bin/docker
     Docker Root Dir: /mnt/sda1/var/lib/docker
    Labels:
     provider=virtualbox



답변

다음 명령을 실행하는 동안 :

docker build -t docker-whale .

Dockerfile이 현재 작업 디렉토리에 있는지 확인하십시오.


답변

부끄러운 일입니다!

오류 메시지가 잘못되었습니다. 이 문제는 심볼릭 링크와 전혀 관련이 없습니다. 일반적으로 docker는 빌드를 설명하는 Dockerfile찾을 수 없습니다 .

일반적인 이유는 다음과 같습니다.

  • Dockerfile의 이름잘못되었습니다 .
    호출되어야합니다 Dockerfile. 호출 될 경우, 예를 들어 dockerfile, .Dockerfile, Dockerfile.txt, 또는 다른이를 찾을 수 없습니다.
  • Dockerfile이 컨텍스트에 없습니다 .
    말할 경우 docker build contextdirDockerfile은에 있어야합니다 contextdir/Dockerfile. 예를 들어, ./Dockerfile대신 들어 있으면 찾을 수 없습니다.
  • Dockerfile 이 전혀 존재하지 않습니다 .
    바보 같습니까? 글쎄, 멋진 Dockerfile을 작성한 후 GitLab CI에서 위의 오류 메시지를 받았지만 체크인하는 것을 잊었습니다. 확실한. 있을 것 같지 않게? 아니.

부끄러운 일이 아닙니다 …

이 하나의 오류 메시지 만이 모호하고 혼란 스럽습니다. 나는 일반적으로 일부 도커 개념과 많은 문서가 의미 상 부정확하다는 것을 알았습니다.

정말 나쁜 점 중 하나는 “태그”라는 개념입니다 (2019 년 8 월 기준). 문서에서 보는 위치에 따라 다음 사항을 모두 명확하게 나타냅니다.

  • 거기입니다 tag그것은 이미지 이름이라고, 명령,하지만 당신이 제공 한 인수가 아닌 태그 또는 태그 이름이라고합니다.
  • 이미지 이름은 이미지 이름과 태그로 구성되며 콜론으로 구분됩니다.
  • 에서 tag명령 인수, 태그 이름은 선택 사항이지만 이미지 이름은 필수입니다. 분명한.
  • 설명서 페이지에서 다음과 같이 말합니다.
    docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
  • 그러나 이미지 이름 앞에 호스트 이름을 붙일 수 있기 때문에 해당 이미지 이름의 모든 이미지 이름이 실제로 이미지 이름 인 것은 아닙니다.
  • 때때로 해당 호스트 이름 부분 이미지 이름의 일부로 간주됩니다.
  • 어쨌든 호스트 이름 x을 가진 이미지 는 (또는 이전에는, 그러나 마술 적으로 항상 붙어있는) 이미지 이름은 해당 호스트에 있어야합니다 x(레지스트리에서). 이러한 이미지에 액세스하려면이 이름을 host prefix와 함께 사용해야합니다 x.
  • 그러나 이미지를 x“푸시”하는 x작업은 별도의 작업 이므로 해당 이름을 가진 이미지는 on뿐만 아니라 모든 호스트에 존재할 수 있습니다 .
  • 따라서 도커 이미지 목록에서 그 이름을 보는 것은별로 의미가 없지만 확실히 무언가를 해칠 것입니다. 때때로 잘못되었습니다.
  • 그건 그렇고 : 네임 스페이스를 언급 했습니까? 이미지 이름에서 호스트 이름과 이미지 이름 사이를 이동할 수 있습니다. 그리고 당신이 보는 위치에 따라 이미지 이름의 일부입니다.

이것으로 혼란스러워하는 것은 당신의 잘못 이 아닙니다 .

rant의 끝.


답변

Windows 8에서 작업하는 경우 Docker 도구 상자를 사용합니다. Dockerfile이 텍스트 파일이므로 mydockerbuild 디렉토리에서 아래 명령을 실행하십시오.

docker build -t docker-whale -f ./Dockerfile.txt .


답변

파일 이름은 Dockerfile아니 어야합니다 .Dockerfile. 파일 확장자는 없어야합니다.


답변

Dockerfile (대문자) 대신 내 파일 dockerfile의 이름을 지정했으며 일단 변경하면 “Dockerfile”처리가 시작되었습니다.


답변

Dockerfile에서 확장자 .txt를 제거하고 명령을 실행하십시오.

docker build -t image-name

확실히 작동합니다.


답변

올바른 명령을 사용하여 이미지를 만들었지 만이 오류가 발생했습니다 (MacBook).

docker build -t testimg .

나중에 경로가 문제라는 것을 알았습니다. docker 파일이 들어있는 올바른 경로로 이동하십시오. 현재 작업 디렉토리를 다시 확인하십시오.