Ответ 1
при выполнении следующей команды:
docker build -t docker-whale .
убедитесь, что Dockerfile присутствует в вашем текущем рабочем каталоге.
Я только что скачал Docker Toolbox для Windows 10 64bit сегодня. Я прохожу учебник. Я получаю следующую ошибку при попытке создать образ с помощью 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
при выполнении следующей команды:
docker build -t docker-whale .
убедитесь, что Dockerfile присутствует в вашем текущем рабочем каталоге.
Если вы работаете с окнами 8, вы будете использовать панель инструментов Docker. Из каталога mydockerbuild выполните команду ниже, так как ваш файл Docker является текстовым файлом
docker build -t docker-whale -f ./Dockerfile.txt .
Имя файла должно быть Dockerfile
а не .Dockerfile
. Файл не должен иметь никакого расширения.
Просто удалите расширение .txt из Dockerfile и запустите команду
docker build -t image-name
Это будет работать точно.
Я назвал файл файла docker файла вместо Dockerfile (заглавными), и как только я его изменил, он начал обрабатывать мой "файл Docker".
У меня есть эта ошибка (в MacBook), хотя я использовал правильную команду для создания изображения,
docker build -t testimg .
Позже я обнаружил, что путь является проблемой. Просто перейдите к правильному пути, содержащему файл докеров. Просто проверьте свою текущую рабочую директорию. Нельзя паниковать!
Сообщение об ошибке вводит в заблуждение. Проблема не имеет ничего общего с символическими ссылками на самом деле. Обычно докер не может найти Dockerfile, описывающий сборку.
Типичные причины:
Dockerfile
. Если он называется, например, dockerfile
, .Dockerfile
, Dockerfile.txt
или другим, он не будет найден.docker build contextdir
, файл Docker должен быть в contextdir/Dockerfile
. Если он у вас есть, скажем, в Dockerfile
, он не будет найден.Не только это одно сообщение об ошибке является расплывчатым и запутанным. Обычно я нахожу некоторые концепции докеров и большую часть документации семантически неточными.
Одним из действительно плохих мест является понятие "тег" (по состоянию на август 2019 года). В зависимости от того, где вы смотрите в документации, он говорит все следующее (более или менее четко):
tag
, но предоставленный вами аргумент не называется тегом или именем тега, он называется именем изображения.tag
имя тега необязательно, но имя изображения обязательно. Очевидный.docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]
x
в (или раньше, но каким-то волшебным образом всегда цепляющемся) имени этого образа затем должно жить на этом хосте x
(в реестре). Если вы хотите получить доступ к такому образу, вам более или менее необходимо использовать это имя с префиксом хоста x
.x
, потому что "передача" изображения на x
является отдельной операцией.Если вас это смущает, это не ваша вина.
Конец разглагольствования.
В окнах 10... период является первым параметром
docker build . -t docker-whale
Я создал свой DockerFile с помощью инструмента поддержки Docker VS2017 и получил ту же ошибку. Через некоторое время я понял, что я не в правильном каталоге, в котором находится файл Docker (~\source\repos\DockerWebApplication\)
. cd'ed к правильному файлу (~/source/repos/DockerWebApplication/DockerWebApplication)
который был в проекте и успешно создал образ докера.
Это просто потому, что Блокнот добавляет ".txt" в конец Dockerfile
В 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.
Я изначально создал свой файл Docker в PowerShell, и хотя я не видел расширения в файле, который он показывал как тип файла PS... как только я создал файл из Notepad ++, обязательно выбрав "Все типы (. )" Тип файла без расширения в имени файла (Dockerfile). Это позволило завершить мою команду построения образа... Просто убедитесь, что у вашего Dockerfile есть тип "Файл"...
Проблема в том, что имя файла должно быть Dockerfile, а не DockerFile или dockerfile, это должен быть D прописной, а затем ockerfile в строчных примечаниях.
Для сборки Dockerfile сохраните автоматизированный контент в Dockerfile. не Dockerfile, потому что при открытии файла команда:
$ notepad Dockerfile
(Текстовый файл записан, поэтому файл не может быть собран)
Чтобы создать файл, выполните:
$ notepad Dockerfile
а теперь беги:
$ docker build -t docker-whale .
Убедитесь, что вы находитесь в текущем каталоге Dockerfile.
Самое главное, чтобы ваше имя файла было Dockerfile
если вы используете другое имя, оно не будет работать (по крайней мере, для меня).
Также, если вы находитесь в той же директории, где находится Dockerfile, используйте .
то есть docker build -t Myubuntu1:v1.
или используйте абсолютный путь, т.е. docker build -t Myubuntu1:v1/Users/<username>/Desktop/Docker
Я в моем случае (запустить из Windows 10)
1) Переименуйте файл myDockerFile.Dockerfile
в Dockerfile
(без расширения файла).
Затем запустите из- под папки эту команду:
docker build .\Docker-LocalNifi\
Это работает для меня и для моих коллег на работе, надеюсь, что это также будет работать для вас
Убедитесь, что имя файла "Dockerfile" не сохранено с каким-либо расширением. Просто создайте файл без каких-либо расширений.
И убедитесь, что Dockerfile находится в том же каталоге, откуда вы пытаетесь создать образ Docker.
Я получил это в Windows, когда путь, в котором я работал, находился под каталогом Junction. Поэтому я решил не работать под этим путем.
Создайте свой файл докеров, используя
touch Dockerfile
На Mac это работает для команды ниже. (надеюсь, что ваш .Dockerfile
находится в вашем корневом каталоге).
docker build -t docker-whale -f .Dockerfile .
Проблема связана с процедурой создания DockerFile.
Для работы откройте cmd, cd в интересующем каталоге и введите:
abc>DockerFile
Это создаст файл с именем DockerFile внутри вашей папки.
Теперь введите:
notepad DockerFile
Это откроет файл DockerFile в блокноте, и вам придется скопировать/вставить стандартный код, предоставленный.
Сохраните файл и, наконец, создайте свой образ с помощью Docker:
docker build -t docker-whale .
Это работает для меня, и я надеюсь, что это помогает другим
Чтобы построить образ из командной строки в 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
Я пробовал это, и он работал:
$ docker build -t test_dotnet_image
"C:\Users\ssundarababu\Documents\Docker\Learn\SimpleDockerfile"
Пожалуйста, смотрите цитаты + кавычки вокруг имени папки.
Примечание. В папке "C:\Users\ssundarababu\Documents\Docker\Learn\SimpleDockerfile"
у меня есть файл Docker.
Ниже команда сработала у меня docker build -t докер-кит -f Dockerfile.txt.