Docker build дает "неспособность подготовить контекст: контекст должен быть каталогом:/Users/tempUser/git/docker/Dockerfile"

У меня есть Dockerfile который должен создать образ Ubuntu. Но когда я бегу

docker build -t ubuntu-test:latest ./Dockerfile

Он показывает следующую ошибку на консоли

невозможно подготовить контекст: context должен быть каталогом:/Пользователи /tempUser/git/docker/Dockerfile

Я нахожусь на Mac OsX. Я тоже пытался sudo. Ничего не работает.

Ответ 1

Вы должны указать на каталог вместо этого. Вы не должны указывать dockerfile.

docker build -t ubuntu-test:latest. работает

docker build -t ubuntu-test:latest./Dockerfile не работает.

Ответ 2

Вы также можете запустить сборку докеров с опцией -f

docker build -t ubuntu-test:latest -f Dockerfile.custom .

Ответ 3

Чтобы указать Dockerfile при сборке, вы можете использовать:

docker build -t ubuntu-test:latest - < /path/to/your/Dockerfile

Но это не удастся, если есть команда ADD или COPY, которая зависит от относительного пути. Существует много способов указать context для docker build, вы можете обратиться к docs docker build для получения дополнительной информации.

Ответ 4

Понять контексты

Команда docker build

Основной синтаксис команды сборки docker:

docker build -t imagename:imagetag context_dir

Контекст

Контекст является каталогом и определяет то, что будет видеть процесс сборки Docker: С точки зрения Dockerfile любой файл context_dir/mydir/myfile в вашей файловой системе станет /mydir/myfile в Dockerfile и, следовательно, в процессе сборки.

Докер файл

Если dockerfile называется Dockerfile и живет в контексте, он будет найден неявно согласно соглашению об именах. Это хорошо, потому что это означает, что вы обычно можете сразу найти Dockerfile в любом контейнере Docker.

Если вы настаиваете на использовании другого имени, например, "/tmp/mydockerfile", вы можете использовать -f следующим образом:

docker build -t imagename:imagetag -f /tmp/mydockerfile context_dir

но тогда файл Docker не будет находиться в той же папке или, по крайней мере, будет сложнее найти.

Ответ 5

Это просто, всякий раз, когда выполняется сборка Docker, докер хочет знать, какое имя изображения, поэтому нам нужно передать -t:. Теперь убедитесь, что вы находитесь в том же каталоге, где у вас есть файл Dockerfile, и запустите

docker build -t <image_name>:<version> . пример docker build -t my_apache:latest . Предполагая, что вы находитесь в том же каталоге, что и ваш Dockerfile, иначе передайте флаг -f и файл Docker.

docker build -t my_apache:latest -f ~/Users/documents/myapache/Dockerfile

Ответ 6

Я сталкиваюсь с той же проблемой. Я использую docker version:17.09.0-ce.

Я следую ниже шагов:

  1. Создать Dockerfile и добавленные команды для создания образа Docker
  2. Перейдите в каталог, где мы создали Dockfile
  3. выполнить команду ниже $ sudo docker build -t ubuntu-test:latest .

Устранена проблема, и изображение успешно создано.

Примечание: команда сборки зависит от версии докера, а также от того, какой вариант сборки мы используем. :)

Ответ 7

Как новичок, у меня такая же ошибка на окнах, dockerfile находится под D:\Projects\Docker\Example1\проблема в том, что я забыл точку в конце команды, чтобы ссылаться на ту же самую папку, в которой я есть. Поэтому команда есть (на powershel

PS D:\Projects\Docker\Example1> docker build -t friendlyhello .

Он создает изображение friendlyhello.