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ć?

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)


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.


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.


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.


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"

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


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"

2

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

docker build -t tag .

i nie

docker build . -t tag


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\

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.


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.


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.


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

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
Korzystając z naszej strony potwierdzasz, że przeczytałeś(-aś) i rozumiesz nasze zasady używania plików cookie i zasady ochrony prywatności.
Licensed under cc by-sa 3.0 with attribution required.