для сборки докера требуется ровно 1 аргумент

Я просто хочу создать файл докеров из другого каталога, я попробовал следующую команду

docker build -f C:/Users/XXXX/XXXX/XXXX/XXXX/XXXX/Dockerfile

и

docker build -f C://Users/XXXX/XXXX/XXXX/XXXX/XXXX/Dockerfile

Оба они дают одну и ту же ошибку

"docker build" requires exactly 1 argument.

Я что-то упускаю ?


person Ajay Sabarish    schedule 23.10.2020    source источник
comment
Вы не передаете требуемый контекстный каталог, только параметр -f .../Dockerfile. Значение по умолчанию -f равно Dockerfile в именованном контекстном каталоге.   -  person David Maze    schedule 23.10.2020
comment
@DavidMaze Но разве -f PATH не контекстный каталог? что еще нужно добавить?   -  person Ajay Sabarish    schedule 23.10.2020
comment
Нет, этот параметр указывает, какой файл Dockerfile следует использовать не по умолчанию; это отдельно от требуемой опции контекстного каталога.   -  person David Maze    schedule 23.10.2020


Ответы (2)


Вы должны указать контекст, текущий каталог, например: ..

docker build -f C://Users/XXXX/XXXX/XXXX/XXXX/XXXX/Dockerfile -t something .

person ItayB    schedule 23.10.2020
comment
почему мы должны добавить . в конце концов, разве это не то, что делает строковая часть -f? - person Ajay Sabarish; 23.10.2020
comment
вы можете попробовать одну косую черту после C:/? . укажите контекст, относительный путь для вашего dockerfile. Все ваши команды в Dockerfile будут относиться к этой текущей папке. - person ItayB; 23.10.2020
comment
так через -f мы меняем текущую папку? в таком случае . является обязательным в каждой команде сборки? - person Ajay Sabarish; 23.10.2020
comment
нет, вам нужен -f <some Dockerfile> if you don't have dockerfile named Dockerfile` в вашем текущем каталоге. Если вы скопируете этот файл в свой текущий каталог, вам не нужно будет указывать это, и docker build -t something . будет достаточно - person ItayB; 24.10.2020

Он интерпретирует C://Users/XXXX/XXXX/XXXX/XXXX/XXXX/Dockerfile в этой строке как значение для ключа -f (или параметра)

Если вы удалите этот -f, он должен скорее интерпретировать его как путь к файлу Dockerfile.

когда я набираю docker build в терминале, я вижу

Usage:  docker build [OPTIONS] PATH | URL | -

я не уверен, что делает переключатель -f, но когда я создаю образы, я почти уверен, что делаю это

docker image build -t tagname /path/to/Dockerfile
person Robert Butler    schedule 23.10.2020
comment
Эта вторая команда — это не путь к Dockerfile, а путь к контексту сборки. - person BMitch; 23.10.2020