Подтвердить что ты не робот

Docker: невозможно подготовить контекст: невозможно оценить символические ссылки в пути Dockerfile: GetFileAttributesEx

Я только что скачал Docker Toolbox для Windows 10 64bit сегодня. Я прохожу учебник. Я получаю следующую ошибку при попытке создать образ с помощью Dockerfile.

шаги:

  • Запущен Docker Quickstart терминал.
  • Тестдокер после его создания.
  • Подготовьте 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.

Кстати, я попробовал несколько вариантов, упомянутых @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
4b9b3361

Ответ 1

при выполнении следующей команды:

docker build -t docker-whale .

убедитесь, что Dockerfile присутствует в вашем текущем рабочем каталоге.

Ответ 2

Если вы работаете с окнами 8, вы будете использовать панель инструментов Docker. Из каталога mydockerbuild выполните команду ниже, так как ваш файл Docker является текстовым файлом

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

Ответ 3

Имя файла должно быть Dockerfile а не .Dockerfile. Файл не должен иметь никакого расширения.

Ответ 4

Просто удалите расширение .txt из Dockerfile и запустите команду

docker build -t image-name 

Это будет работать точно.

Ответ 5

Я назвал файл файла docker файла вместо Dockerfile (заглавными), и как только я его изменил, он начал обрабатывать мой "файл Docker".

Ответ 6

У меня есть эта ошибка (в MacBook), хотя я использовал правильную команду для создания изображения,

docker build -t testimg .

Позже я обнаружил, что путь является проблемой. Просто перейдите к правильному пути, содержащему файл докеров. Просто проверьте свою текущую рабочую директорию. Нельзя паниковать!

Ответ 7

Это позор!

Сообщение об ошибке вводит в заблуждение. Проблема не имеет ничего общего с символическими ссылками на самом деле. Обычно докер не может найти Dockerfile, описывающий сборку.

Типичные причины:

  • Dockerfile имеет неправильное имя wrong name.
    Он должен называться Dockerfile. Если он называется, например, dockerfile, .Dockerfile, Dockerfile.txt или другим, он не будет найден.
  • Dockerfile не находится в контексте.
    Если вы говорите docker build contextdir, файл Docker должен быть в contextdir/Dockerfile. Если он у вас есть, скажем, в Dockerfile, он не будет найден.
  • Dockerfile не существует.
    Звучит глупо? Ну, я получил вышеуказанное сообщение об ошибке от моего GitLab CI после того, как написал хороший Dockerfile, но забыл проверить его. Глупо? Конечно. Навряд ли? Нет.

Это не единственный позор...

Не только это одно сообщение об ошибке является расплывчатым и запутанным. Обычно я нахожу некоторые концепции докеров и большую часть документации семантически неточными.

Одним из действительно плохих мест является понятие "тег" (по состоянию на август 2019 года). В зависимости от того, где вы смотрите в документации, он говорит все следующее (более или менее четко):

  • Существует команда tag, но предоставленный вами аргумент не называется тегом или именем тега, он называется именем изображения.
  • Имя изображения состоит из имени изображения и тега, разделенных двоеточием.
  • В аргументе команды tag имя тега необязательно, но имя изображения обязательно. Очевидный.
  • По словам страницы документации:
    docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
  • Но не все имя изображения в этом имени изображения на самом деле является именем изображения, потому что к имени изображения может предшествовать имя хоста.
  • Хотя иногда эта часть имени хоста считается частью имени изображения.
  • В любом случае, изображение с именем хоста x в (или раньше, но каким-то волшебным образом всегда цепляющемся) имени этого образа затем должно жить на этом хосте x (в реестре). Если вы хотите получить доступ к такому образу, вам более или менее необходимо использовать это имя с префиксом хоста x.
  • Но изображение с таким именем может жить на любом хосте, а не только на x, потому что "передача" изображения на x является отдельной операцией.
  • Так что, увидев это имя в списке изображений докера, ничего не значит, но оно наверняка что-то намекает. Иногда неправильно.
  • Кстати: я упомянул пространства имен? Они могут идти между именем хоста и именем изображения в имени изображения. А также являются частью имени изображения или нет, в зависимости от того, где вы смотрите.

Если вас это смущает, это не ваша вина.

Конец разглагольствования.

Ответ 8

В окнах 10... период является первым параметром

docker build . -t docker-whale

Ответ 9

Я создал свой DockerFile с помощью инструмента поддержки Docker VS2017 и получил ту же ошибку. Через некоторое время я понял, что я не в правильном каталоге, в котором находится файл Docker (~\source\repos\DockerWebApplication\). cd'ed к правильному файлу (~/source/repos/DockerWebApplication/DockerWebApplication) который был в проекте и успешно создал образ докера.

Ответ 10

Это просто потому, что Блокнот добавляет ".txt" в конец Dockerfile

Ответ 11

В WSL, похоже, есть проблема с преобразованием пути. Расположение Dockerfile в Ubuntu (где я запускаю docker и где живет Dockerfile) - "/home/sxw455/App1", но ни одна из этих команд не сработала:

$ pwd
/home/sxw455/App1
$ ll
total 4
drwxrwxrwx 0 sxw455 sxw455 4096 Dec 11 19:28 ./
drwxr-xr-x 0 sxw455 sxw455 4096 Dec 11 19:25 ../
-rwxrwxrwx 1 sxw455 sxw455  531 Dec 11 19:26 Dockerfile*
-rwxrwxrwx 1 sxw455 sxw455  666 Dec 11 19:28 app.py*
-rwxrwxrwx 1 sxw455 sxw455   12 Dec 11 19:27 requirements.txt*

$ docker build -t friendlyhello .
unable to prepare context: unable to evaluate symlinks in Dockerfile path: GetFileAttributesEx C:\Windows\System32\Dockerfile: The system cannot find the file specified.

$ docker build -t friendlyhello "/home/sxw455/App1"
unable to prepare context: path "/home/sxw455/App1" not found

Но в Windows фактический путь:

C:\Users\sxw455\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\sxw455\App1

И поэтому я должен был сделать это (хотя я запускал его из Bash):

$ docker build -t friendlyhello 
"C:\Users\sxw455\AppData\Local\Packages\CanonicalGroupLimited.Ubuntu18.04onWindows_79rhkp1fndgsc\LocalState\rootfs\home\sxw455\App1"

Sending build context to Docker daemon   5.12kB
Step 1/7 : FROM python:2.7-slim
 ---> 0dc3d8d47241
Step 2/7 : WORKDIR /app
 ---> Using cache
 ---> f739aa02ce04
Step 3/7 : COPY . /app
 ---> Using cache
 ---> 88686c524ae9
Step 4/7 : RUN pip install --trusted-host pypi.python.org -r requirements.txt
 ---> Using cache
 ---> b95f02b14f78
Step 5/7 : EXPOSE 80
 ---> Using cache
 ---> 0924dbc3f695
Step 6/7 : ENV NAME World
 ---> Using cache
 ---> 85c145785b87
Step 7/7 : CMD ["python", "app.py"]
 ---> Using cache
 ---> c2e43b7f0d4a
Successfully built c2e43b7f0d4a
Successfully tagged friendlyhello:latest
SECURITY WARNING: You are building a Docker image from Windows against a non-Windows Docker host. All files and directories added to build context will have '-rwxr-xr-x' permissions. It is recommended to double check and reset permissions for sensitive files and directories.

У меня были похожие проблемы с переменными среды во время первоначальной установки, и я следовал совету установить Windows DockerCE и взломать переменные среды, а не устанавливать Ubuntu DockerCE, потому что (надеюсь, я правильно запомнил), что WSL не полностью реализует systemctl. После завершения установки Windows Docker CE и установки переменных среды Docker работает нормально в WSL/Ubuntu.

Ответ 12

Я изначально создал свой файл Docker в PowerShell, и хотя я не видел расширения в файле, который он показывал как тип файла PS... как только я создал файл из Notepad ++, обязательно выбрав "Все типы (. )" Тип файла без расширения в имени файла (Dockerfile). Это позволило завершить мою команду построения образа... Просто убедитесь, что у вашего Dockerfile есть тип "Файл"...

Ответ 13

Проблема в том, что имя файла должно быть Dockerfile, а не DockerFile или dockerfile, это должен быть D прописной, а затем ockerfile в строчных примечаниях.

Ответ 14

Для сборки Dockerfile сохраните автоматизированный контент в Dockerfile. не Dockerfile, потому что при открытии файла команда:

$ notepad Dockerfile 

(Текстовый файл записан, поэтому файл не может быть собран)

Чтобы создать файл, выполните:

$ notepad Dockerfile

а теперь беги:

$ docker build -t docker-whale .

Убедитесь, что вы находитесь в текущем каталоге Dockerfile.

Ответ 15

Самое главное, чтобы ваше имя файла было Dockerfile если вы используете другое имя, оно не будет работать (по крайней мере, для меня).

Также, если вы находитесь в той же директории, где находится Dockerfile, используйте . то есть docker build -t Myubuntu1:v1. или используйте абсолютный путь, т.е. docker build -t Myubuntu1:v1/Users/<username>/Desktop/Docker

Ответ 16

Я в моем случае (запустить из Windows 10)
1) Переименуйте файл myDockerFile.Dockerfile в Dockerfile (без расширения файла).
Затем запустите из- под папки эту команду:

docker build .\Docker-LocalNifi\ 

Это работает для меня и для моих коллег на работе, надеюсь, что это также будет работать для вас

Ответ 17

Убедитесь, что имя файла "Dockerfile" не сохранено с каким-либо расширением. Просто создайте файл без каких-либо расширений.

И убедитесь, что Dockerfile находится в том же каталоге, откуда вы пытаетесь создать образ Docker.

Ответ 18

Я получил это в Windows, когда путь, в котором я работал, находился под каталогом Junction. Поэтому я решил не работать под этим путем.

Ответ 19

Создайте свой файл докеров, используя

touch Dockerfile

Ответ 20

На Mac это работает для команды ниже. (надеюсь, что ваш .Dockerfile находится в вашем корневом каталоге).

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

Ответ 21

Проблема связана с процедурой создания DockerFile.

Для работы откройте cmd, cd в интересующем каталоге и введите:

abc>DockerFile

Это создаст файл с именем DockerFile внутри вашей папки.

Теперь введите:

notepad DockerFile 

Это откроет файл DockerFile в блокноте, и вам придется скопировать/вставить стандартный код, предоставленный.

Сохраните файл и, наконец, создайте свой образ с помощью Docker:

docker build -t docker-whale . 

Это работает для меня, и я надеюсь, что это помогает другим

Ответ 22

Чтобы построить образ из командной строки в Windows/Linux. 1. Создайте файл Docker в вашем текущем каталоге.  например: ОТ убунту      RUN apt-get update      RUN apt-get -y установить apache2      ДОБАВЛЯТЬ. /Var/WWW/HTML      ENTRYPOINT apachectl -D ЗАГЛУШЕНИЕ      ENV имя Devops_Docker 2. Не сохраняйте его с расширением .txt. 3. В командной строке выполните команду  сборка докера. -t apache2image

Ответ 23

Я пробовал это, и он работал:

$ docker build -t test_dotnet_image 
"C:\Users\ssundarababu\Documents\Docker\Learn\SimpleDockerfile"

Пожалуйста, смотрите цитаты + кавычки вокруг имени папки.

Примечание. В папке "C:\Users\ssundarababu\Documents\Docker\Learn\SimpleDockerfile" у меня есть файл Docker.

Ответ 24

Ниже команда сработала у меня docker build -t докер-кит -f Dockerfile.txt.