Докер: «сборка» требует 1 аргумента. Смотрите 'сборка докера --help'

315

Попытка следовать инструкциям по созданию образа докера с веб-сайта докера.

https://docs.docker.com/examples/running_redis_service/

это ошибка, которую я получаю, следуя инструкциям в документе и используя этот Dockerfile

FROM        ubuntu:14.04
RUN         apt-get update && apt-get install -y redis-server
EXPOSE      6379
ENTRYPOINT  ["/usr/bin/redis-server"]


sudo docker build -t myrepo/redis
docker: "build" requires 1 argument. See 'docker build --help'.

Как решить?

Tampa
источник

Ответы:

657

Вам нужно добавить точку, например, docker build -t mytag .это означает, что вы используете Dockerfile в локальном каталоге, и если вы используете Docker 1.5, вы можете указать Dockerfile в другом месте, извлеките его с помощью Docker build-f, --file="" Name of the Dockerfile(Default is 'Dockerfile' at context root)

user2915097
источник
3
не могли бы вы отметить именно эту команду: "docker build -t mytag." не увидел точку
nekperu15739
6
@ user2915097 Я не согласен с этим. (точка) означает локальный каталог, потому что при использовании опции -f (--file), ставить. (точка) по-прежнему является обязательным.
Андолси зид
5
. указывает контекст сборки
андолси зид
35
Вопрос популярности показывает, насколько неясен синтаксис команды docker ... Лично я думал, что точка означает только конец предложения ...
Разочаровано
2
Привет от docs.docker.com/get-started/part2/#apppy - я был слишком слеп, чтобы увидеть. там тоже!
Алекс Янсен
31

Вы скопировали команду сборки из другого места (веб-страницы или другого файла)? Попробуйте набрать его с нуля.

Я скопировал команду сборки из учебника AWS, вставил ее в свой терминал и получил эту ошибку. Это сводило меня с ума. После ввода вручную, это сработало! Присмотревшись поближе и мои предыдущие неудачные команды, я заметил, что символ «тире» был другим, это был более тонкий и длинный символ тире, чем тот, который я набрал, набрав его самостоятельно с помощью клавиши «минус / тире».

Плохой:

сборка sudo docker –t foo.

Хорошо:

Сборка sudo docker -t foo.

Вы видите разницу? .. Вырезать и вставлять сложно.

Майкл Петерсон
источник
22

Используйте следующую команду

docker build -t mytag .

Обратите внимание, что mytag и точка имеют пробел между ними. Эта точка представляет текущий рабочий каталог.

arunprakashpj
источник
17

введите описание изображения здесьПросто поставьте точку (.) В конце команды, включая один пробел.

пример:

Команда: Docker build -t "blink: v1".

Здесь вы можете увидеть «blink: v1», затем пробел, затем точку (.)

Это оно.

Harunduet
источник
17

В моем случае эта ошибка происходила в конвейере Gitlab CI, когда я передавал несколько переменных Gitlab env docker buildс --build-argфлагами.

Оказывается, в одной из переменных был пробел, который вызывал ошибку. Это было трудно найти , так как бревна трубопровода просто показали $VARIABLE_NAME.

Обязательно заключите в кавычки переменные среды, чтобы пробелы обрабатывались правильно.

Меняться от:

--build-arg VARIABLE_NAME=$VARIABLE_NAME

чтобы:

--build-arg VARIABLE_NAME="$VARIABLE_NAME"
spencer.sm
источник
1
спасти мою погуглите;)
Adiii
Это была именно та проблема, которая у меня была. Большое спасибо!
Фи
10


Вам нужно DOT в конце ...


Так, например:

$ docker build -t <your username>/node-web-app .

Это немного скрыто, но если вы обратите внимание .на в конце ...

Алиреза
источник
1
Ты спас мой день. Спасибо вам.
PhatHV
3

Вы можете создать образ Docker из файла с именем docker file и именем Dockerfile по умолчанию. Он имеет набор команд / инструкций, которые вам нужны в вашем док-контейнере. Ниже команда создает изображение с тегом последней, Dockerfile должен присутствовать в этом месте (. Означает текущую директорию)

docker build . -t <image_name>:latest

Вы можете указать Dockerfile через -f, если имя файла не по умолчанию (Dockerfile) Содержимое файла Sameple Docker.

FROM busybox
RUN echo "hello world"
Vaseem007
источник
2

В старых версиях Docker кажется, что вам нужно использовать этот порядок:

docker build -t tag .

и нет

docker build . -t tag

Райан Р
источник
1

Откройте PowerShelland и следуйте этим инструкциям. Этот тип ошибки типично в Windows SO При использовании команды build требуется опция и путь.

Существует ошибка такого типа, потому что вы не указали путь к вашему Dockerfile.

Попробуй это:

C:\Users\Daniele\app> docker build -t friendlyhello C:\Users\Daniele\app\
  1. friendlyhello - это имя, которое вы назначаете своему сопернику
  2. C: \ Users \ Daniele \ app \ - это путь к вашему Dockerfile

если вы хотите добавить тег

C:\Users\Daniele\app> docker build -t friendlyhello:3.0 C:\Users\Daniele\app\
daniele3004
источник
1

В случае, если кто-то сталкивается с этой проблемой при попытке пометить -tизображение, а также построить его из файла, который НЕ назван Dockerfile(т.е. не использует просто .путь), вы можете сделать это следующим образом:

docker build -t my_image -f my_dockerfile .

Обратите внимание, что докер ожидает каталог в качестве параметра и имя файла в качестве опции.

Рикардо Педрони
источник
0

Моя проблема заключалась в том, что Dockerfile.txt нужно было преобразовать в исполняемый файл Unix. Как только я это сделал, эта ошибка ушла.

Возможно, вам придется удалить часть .txt перед этим, но на Mac перейдите в терминал и перейдите в каталог, где находится ваш Dockerfile, и введите

chmod +x "Dockerfile"

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

SlickRemix
источник
0

Следующая команда работала для меня. Файл Docker был помещен в папку my-app-master.

сборка докера -f my-app-master / Dockerfile -t my-app-master.

user9441950
источник
-4

Формат команды сборки Docker

В вашем PowerShell: есть этот тип ошибки, потому что вы не указали путь с вашим Dockerfile.

Попробуй это:

$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt

friendlyhello - это имя, которое вы назначаете своему контейнеру и добавляете версию, просто используйте : latest

-f C: \ TestDockerApp \ Dockerfile.txt - вы хотите добавить тег, потому что команде сборки нужен параметр или тег - DockerFile представляет собой текстовый документ, поэтому явно добавьте расширение .txt

** Попробуйте этот формат:

$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt .**
Адиел Айзекс
источник
1
Команда, которую вы предоставили, должна завершиться с той же ошибкой. Вы должны включить контекст сборки в качестве аргумента, часто это .указывает, что текущий каталог должен быть отправлен в механизм докера в качестве контекста сборки.
BMitch