Можете ли вы понять смысл сообщений об ошибках Docker?

#docker #dockerfile

#docker #dockerfile

Вопрос:

Я признаю, что я новичок в мире контейнеров. Но мне удалось запустить docker на моем W10 с помощью WSL2. Я также могу использовать docker-UI и запускать контейнеры / приложения или изображения. Поэтому я считаю, что инфраструктура на месте и обновляется. Тем не менее, когда я пытаюсь использовать даже самый простой Dockerfile, он, похоже, не работает, и я не понимаю сообщения об ошибках, которые он выдает: это Dockerfile:

 FROM ubuntu:20.04
 

(да, скромное начало — или чрезвычайно урезанный репро)

 docker build Dockerfile
[ ] Building 0.0s (2/2) FINISHED
 => ERROR [internal] load build definition from Dockerfile                                                                                                                    0.0s
 => => transferring dockerfile: 33B                                                                                                                                           0.0s
 => ERROR [internal] load .dockerignore                                                                                                                                       0.0s
 => => transferring context: 33B                                                                                                                                              0.0s
------
 > [internal] load build definition from Dockerfile:
------
------
 > [internal] load .dockerignore:
------
failed to solve with frontend dockerfile.v0: failed to build LLB: error from sender: Dockerfile is not a directory
 

Ответ №1:

Вам нужно выполнить docker build -f [docker_file_name] . (не пропустите точку в конце).

Если имя вашего файла равно Dockerfile , то вам не нужно -f и имя файла.

Ответ №2:

Я столкнулся с аналогичной проблемой, я использую docker desktop для Windows. Перезагрузил ноутбук, и проблема была решена. Надеюсь, это может кому-то помочь.

Комментарии:

1. tbh: Перезагрузка — это всегда хорошая идея, но она не может исправить ошибочную точку. Однако в «чистой» оболочке вы не можете снова вводить строку без точки 😉

Ответ №3:

Для меня у меня была символическая ссылка Linux в том же каталоге, что и Dockerfile. При запуске docker build из Windows 10 это дало мне ERROR [internal] load build definition from Dockerfile . Я подозреваю, что Docker docker build . сканирует каталог и, если он не может прочитать один файл, он выходит из строя. Для меня я смонтировал каталог с помощью WSL и удалил символическую ссылку.

Ответ №4:

У меня была та же проблема, но другое решение (в Windows):

  • Я открыл консоль в своей папке; моя папка содержит только Dockerfile
  • Dockerfile содержимое было FROM ubuntu:20.04 (таким же, как OP)
  • Запускался docker build , зная, что у меня есть Dockerfile в моей текущей папке
  • Я получал то же сообщение об ошибке OP
  • Я остановил службу Docker Desktop
  • Запустил docker build снова — получил "docker build" requires exactly 1 argument.
  • Ran docker build Dockerfile — получил unable to prepare context: context must be a directory: C:zdockeraem_ubuntu20Dockerfile
  • Ran docker build . — получил error during connect: This error may indicate that the docker daemon is not running.
  • Повторно запустил службу Docker Desktop
  • Запуск docker build . — успех!
  • Вывод: docker build PATH , где PATH должно быть имя папки, и эта папка должна содержать Dockerfile

Ответ №5:

В моем случае я получил эту ошибку при запуске docker команд в неправильном каталоге. Просто cd в каталог, где находится ваш Dockerfile, и все снова хорошо.