docker: „build” wymaga 1 argumentu. Zobacz „build docker --help”

315

Próbowano postępować zgodnie z instrukcjami dotyczącymi tworzenia obrazu dokera ze strony internetowej dokera.

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

to jest błąd, który otrzymuję, postępując zgodnie z instrukcjami na dokumencie i używając tego pliku Docker

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'.

Jak rozwiązać?

Tampa
źródło

Odpowiedzi:

657

Musisz dodać kropkę, na przykład docker build -t mytag .oznacza to, że używasz Dockerfile w lokalnym katalogu, a jeśli używasz Docker 1.5, możesz podać Dockerfile w innym miejscu, wypakuj z pomocy kompilacji Docker-f, --file="" Name of the Dockerfile(Default is 'Dockerfile' at context root)

użytkownik2915097
źródło
3
czy mógłbyś dokładnie zaznaczyć polecenie: „docker build -t mytag”. nie widziałem kropki
nekperu15739
6
@ user2915097 Nie zgadzam się z tym. (kropka) oznacza katalog lokalny, ponieważ gdy używasz opcji -f (--file), wstawianie. (kropka) jest nadal obowiązkowa.
andolsi zied
5
. określa kontekst kompilacji
andolsi zied
34
Popularność pytań pokazuje, jak niejasna jest składnia komendy dokera ... Osobiście myślałem, że kropka oznacza tylko koniec zdania ...
Rozczarowany
2
Witaj z docs.docker.com/get-started/part2/#apppy - byłem zbyt ślepy, aby zobaczyć. tam też!
Alex Jansen,
31

Czy skopiowałeś polecenie kompilacji z innej strony (strony internetowej lub innego pliku)? Spróbuj wpisać go od zera.

Skopiowałem polecenie kompilacji z samouczka AWS i wkleiłem go do terminala i otrzymywałem ten błąd. Doprowadzało mnie to do szału. Po ręcznym wpisaniu zadziałało! Przyglądając się bliżej i moje poprzednie nieudane polecenia, zauważyłem, że znak „myślnik” był inny, był cieńszy, dłuższy znak myślnik niż dostałem, gdybym go sam wpisał za pomocą klawisza „minus / myślnik”.

Zły:

sudo docker build - t foo.

Dobrze:

sudo docker build -t foo.

Czy widzisz różnicę? Cięcie i wklejanie jest trudne.

Michael Peterson
źródło
22

Użyj następującego polecenia

docker build -t mytag .

Zauważ, że mytag i kropka mają spację między nimi. Ta kropka reprezentuje obecny katalog roboczy.

arunprakashpj
źródło
17

wprowadź opis zdjęcia tutajWystarczy podać kropkę (.) Na końcu polecenia, w tym jedną spację.

przykład:

polecenie: docker build -t "blink: v1".

Tutaj możesz zobaczyć „mrugnięcie: v1”, a następnie spację, a następnie kropkę (.)

Otóż ​​to.

Harunduet
źródło
16

W moim przypadku ten błąd się dzieje w rurociągu Gitlab CI kiedy przechodzącej wielu Gitlab zmienne env się docker buildz --build-argflagami.

Okazuje się, że jedna ze zmiennych miała spację, która powodowała błąd. Trudno było znaleźć, ponieważ dzienniki rurociągu właśnie pokazały $VARIABLE_NAME.

Podaj zmienne środowiskowe, aby spacje były obsługiwane poprawnie.

Zmień z:

--build-arg VARIABLE_NAME=$VARIABLE_NAME

do:

--build-arg VARIABLE_NAME="$VARIABLE_NAME"
spencer.sm
źródło
1
save my googling;)
Adiii
To był dokładnie problem, który miałem. Dziękuję Ci bardzo!
phi
10


Potrzebujesz DOT na końcu ...


Na przykład:

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

Jest trochę ukryty, ale jeśli zwrócisz uwagę .na koniec ...

Alireza
źródło
1
Uratowałeś mi dzień. Dzięki Ci.
PhatHV
3

Możesz zbudować obraz dokera z pliku o nazwie plik dokera i domyślnie o nazwie plik dokowania. Zawiera zestaw poleceń / instrukcji, których potrzebujesz w kontenerze dokera. Poniższe polecenie tworzy obraz z najnowszym znacznikiem, plik Dockerfile powinien znajdować się w tej lokalizacji (. Oznacza obecny katalog)

docker build . -t <image_name>:latest

Możesz podać plik Docker za pomocą -f, jeśli nazwa pliku nie jest domyślną (Dockerfile) zawartością pliku Sameple Docker.

FROM busybox
RUN echo "hello world"
Vaseem007
źródło
2

W starszych wersjach Dockera wydaje się, że musisz użyć tej kolejności:

docker build -t tag .

i nie

docker build . -t tag

Ryan R.
źródło
1

Otwórz PowerShelland i postępuj zgodnie z tymi instrukcjami. Ten typ błędu występuje typowo w systemie Windows SO. Podczas korzystania z komendy build potrzebna jest opcja i ścieżka.

Występuje tego rodzaju błąd, ponieważ nie określono ścieżki do pliku Docker.

Spróbuj tego:

C:\Users\Daniele\app> docker build -t friendlyhello C:\Users\Daniele\app\
  1. friendlyhello to nazwa, którą przypisujesz swojemu conteiner
  2. C: \ Users \ Daniele \ app \ to ścieżka, która odpowiada Twojemu plikowi Docker

jeśli chcesz dodać tag

C:\Users\Daniele\app> docker build -t friendlyhello:3.0 C:\Users\Daniele\app\
daniele3004
źródło
1

Jeśli ktoś napotyka ten problem podczas próby oznaczenia -tobrazu, a także skompilowania go z pliku, który NIE jest nazwany Dockerfile(tzn. Nie używa prostej .ścieżki), możesz to zrobić w następujący sposób:

docker build -t my_image -f my_dockerfile .

Zauważ, że doker oczekuje katalogu jako parametru i nazwy pliku jako opcji.

Ricardo Pedroni
źródło
0

Mój problem polegał na tym, że plik Dockerfile.txt musiał zostać przekonwertowany na plik wykonywalny systemu Unix. Kiedy to zrobiłem, ten błąd zniknął.

Być może będziesz musiał usunąć część .txt, zanim to zrobisz, ale na komputerze Mac przejdź do terminala i przejdź do katalogu, w którym znajduje się plik Docker i typ

chmod +x "Dockerfile"

A następnie przekonwertuje plik na plik wykonywalny systemu Unix, który można następnie wykonać za pomocą komendy kompilacji Docker.

SlickRemix
źródło
0

Następujące polecenie działało dla mnie. Plik Docker został umieszczony w folderze my-app-master.

docker build -f my-app-master / Dockerfile -t my-app-master.

użytkownik9441950
źródło
-4

Format polecenia kompilacji Docker

W twojej PowerShell: występuje tego rodzaju błąd, ponieważ nie określiłeś ścieżki do pliku Docker.

Spróbuj tego:

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

friendlyhello to nazwa, którą przypisujesz swojemu kontenerowi i dodajesz wersję, po prostu użyj : najnowszych

-f C: \ TestDockerApp \ Dockerfile.txt - chcesz dodać znacznik, ponieważ polecenie kompilacji wymaga parametru lub znacznika - DockerFile jest dokumentem tekstowym, więc jawnie dodaj rozszerzenie .txt

** Wypróbuj ten format:

$ docker build -t friendlyhello:latest -f C:\\TestDockerApp\\Dockerfile.txt .**
Adiel Isaacs
źródło
1
Podane polecenie powinno zakończyć się niepowodzeniem z tym samym błędem. Jako argument kompilacji należy podać kontekst kompilacji, często .aby wskazać, że bieżący katalog powinien zostać przesłany do mechanizmu dokowania jako kontekst kompilacji.
BMitch