Сборка Docker и DockerFile

#docker #build #dockerfile

#docker #сборка #dockerfile

Вопрос:

Я новичок в Docker, и у меня возникли некоторые проблемы со сборкой Dockerfile .. и много вопросов

Должен ли я запускать сборку команд в path /var / lib / docker / builder ? Как я узнаю, что он не собирается, потому что мой Dockerfile написан неправильно? Должен ли я вызывать свою папку Dockerfile?

docker build -t dokcerfile/xdebugphp .

чем я получил Error response from daemon: unexpected error reading Dockerfile: read lstat /var/lib/docker/builder/Dokcerfile: no such file or directory

с Get-Content Dockerfile | docker build -

Error response from daemon: the Dockerfile (Dockerfile) cannot be empty

Ответ №1:

Вы можете запускать docker build из любого каталога. Если вы попытаетесь COPY вставить файл в изображение, которого нет в указанном вами каталоге, вы увидите сообщение об ошибке, которое ссылается /var/lib/docker , но это артефакт реализации сборки Docker. (На самом деле, вам действительно не следует заглядывать внутрь или пытаться напрямую использовать /var/lib/docker каталог вообще.)

Файл, содержащий инструкции по сборке, имеет обычное имя Dockerfile (в системах с чувствительными к регистру файловыми системами — с заглавной D буквы и без расширения). Чаще всего он находится в корне вашего исходного репозитория. Это не должно быть каталогом.

docker build -t Опция присваивает тег (имя) созданному изображению. Это не обязательно должно соответствовать файлу на диске. Если вы используете Docker Hub для хранения своих изображений (или просто хотите эмулировать его именование), они имеют форму username/imagename:version ; существует расширенный формат, если вы используете какой-либо другой реестр образов Docker.

Вы можете назвать Dockerfile как-то иначе; если вы это сделаете, вам понадобится docker build -f опция для ссылки на этот файл. Если он находится в подкаталоге корневого репозитория, важной деталью является то, что COPY инструкции копируются из каталога «context», который вы передаете в качестве аргумента directory docker build ; это может отличаться от каталога, содержащего Dockerfile . Например, если ваш Dockerfile имеет COPY index.php . , и вы запускаете docker build -f docker/xdebugphp . , файл копируется из . текущего каталога, который является родительским каталогом Dockerfile.

Ответ №2:

Похоже на окончания строк, попробуйте изменить окончания строк dockerfile на LF

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

итак, в каталоге, где находится команда dockerfile, есть docker build -t IMAGENAMEHERE .

Ответ №3:

Итак, я решил это с помощью этой команды

 docker build -t imagename -f Dockerfile/xdebugphp .