docker: “build” 1 argüman gerektirir. Bkz. 'Docker build --help'


315

Docker web sitesinden bir docker görüntüsü oluşturma talimatlarını izlemeye çalışın.

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

Bu, doktordaki talimatları izleyerek ve bu Dockerfile'ı kullanarak alacağım hata

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

Nasıl çözümlenir?

Yanıtlar:


657

Bir nokta eklemeniz gerekir, örneğin docker build -t mytag ., yerel dizinde Dockerfile'ı kullandığınız anlamına gelir ve docker 1.5'i kullanırsanız, başka bir yerde bir Dockerfile belirtebilirsiniz, docker build'in yardımından ayıklayın-f, --file="" Name of the Dockerfile(Default is 'Dockerfile' at context root)


3
tam olarak şu komutu işaretler misiniz: "docker build -t mytag." nokta görmedim
nekperu15739

6
@ user2915097 Buna katılmıyorum. (dot) yerel dizin anlamına gelir, çünkü -f (--file) seçeneğini kullanırken. (nokta) hala zorunludur.
andolsi

5
. yapı bağlamını belirtir
andolsi

35
Soru popülerlik docker komut sözdiziminin ne kadar belirsiz olduğunu gösterir ... Şahsen ben nokta cümlenin sadece sonu anlamına geldiğini düşündüm ...
Hayal kırıklığına

2
Merhaba docs.docker.com/get-started/part2/#apppy - Görmek için çok kördüm. orada da!
Alex Jansen

31

Build komutunu başka bir yerden (web sayfası veya başka bir dosya) kopyaladınız mı? Sıfırdan yazmayı deneyin.

Bir yapı komutunu bir AWS öğreticisinden kopyaladım ve terminalime yapıştırdım ve bu hatayı alıyordum. bu beni deli ediyor. Elle yazdıktan sonra işe yaradı! Daha yakından baktığımda ve önceki başarısız komutlarımda, "çizgi" karakterinin farklı olduğunu fark ettim, "eksi / çizgi" tuşunu kullanarak kendim yazdığımda aldığımdan daha ince, daha uzun çizgi karakteri oldu.

Kötü:

sudo docker yapı –t foo.

İyi:

sudo docker yapı -t foo.

Farkı görebiliyor musunuz? .. Kes ve yapıştır zordur.


22

Aşağıdaki komutu kullanın

docker build -t mytag .

Etiketin ve noktanın aralarında boşluk olduğunu unutmayın. Bu nokta mevcut çalışma dizinini temsil eder.


17

resim açıklamasını buraya girinKomutun sonunda bir boşluk dahil nokta (.) Girin.

misal:

komut: docker build -t "yanıp sönüyor: v1".

Burada "yanıp sönme: v1" ifadesini, sonra bir boşluk ve ardından nokta (.)

Bu kadar.


17

Benim durumumda bu hata ben birden Gitlab env değişkenleri geçiyordu bir Gitlab CI boru hattına oluyordu docker buildile --build-argbayraklar.

Çıkıyor değişkenlerden biri içinde bir boşluk vardı hataya neden oldu. Boru hattı günlükleri sadece gösterdiğinden beri bulmak zordu $VARIABLE_NAME.

Boşlukların doğru işlenmesi için ortam değişkenlerini belirttiğinizden emin olun.

Şununla değiştir:

--build-arg VARIABLE_NAME=$VARIABLE_NAME

için:

--build-arg VARIABLE_NAME="$VARIABLE_NAME"

1
kurtarmak benim googling;)
Adiii

Bu benim yaşadığım problemdi. Çok teşekkür ederim!
phi

10


Sonunda bir DOT'a ihtiyacınız var ...


Yani mesela:

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

Biraz gizli, ama .sonunda dikkat ederseniz ...


1
Günümü kurtardın. Teşekkürler.
PhatHV

3

Docker dosyasını varsayılan olarak docker dosyası adı verilen ve Dockerfile adlı bir dosyadan oluşturabilirsiniz. Docker konteynırınızda ihtiyacınız olan komut / talimat setine sahiptir. Aşağıdaki komut, en son etiketli bir resim oluşturur, Dockerfile bu konumda bulunmalıdır (.

docker build . -t <image_name>:latest

Dosya adı varsayılan değilse (Dockerfile) Sameple Docker dosya içeriğinde Dockerfile öğesini -f ile belirtebilirsiniz.

FROM busybox
RUN echo "hello world"

2

Docker'ın eski sürümlerinde bu siparişi kullanmanız gerektiği anlaşılıyor:

docker build -t tag .

ve yok

docker build . -t tag


1

PowerShelland'ı açın ve bu talimatları izleyin. Bu tür bir hata, Windows SO'da tipik olarak bulunmaktadır .

Dockerfile dosyanızla bir yol belirtmediğiniz için bu tür bir hata var.

Bunu dene:

C:\Users\Daniele\app> docker build -t friendlyhello C:\Users\Daniele\app\
  1. friendlyhello, konteynerinize atadığınız isimdir
  2. C: \ Users \ Daniele \ app \, Dockerfile dosyanızı içeren yoldur

etiket eklemek istiyorsan

C:\Users\Daniele\app> docker build -t friendlyhello:3.0 C:\Users\Daniele\app\

1

-tGörüntüyü etiketlemeye ve ayrıca adlandırılmamış bir dosyadan Dockerfile(yani yalnızca .yolu kullanmadan) oluşturmaya çalışırken herkesin bu sorunla karşılaşması durumunda , bunu şu şekilde yapabilirsiniz:

docker build -t my_image -f my_dockerfile .

Docker'ın bir dizini parametre olarak ve dosya adını da seçenek olarak beklediğine dikkat edin.


0

Benim sorunum Dockerfile.txt Unix yürütülebilir dosyaya dönüştürülmesi gerekiyordu. Bunu yaptıktan sonra bu hata ortadan kalktı.

Bunu yapmadan önce .txt bölümünü kaldırmanız gerekebilir, ancak bir mac'ta Dockerfile dosyanızın ve türün bulunduğu dizine terminal ve cd'ye gidin

chmod +x "Dockerfile"

Ve sonra dosyanızı Doix build komutu ile çalıştırılabilen Unix yürütülebilir dosyasına dönüştürür.


0

Aşağıdaki komut benim için çalıştı. Docker dosyası benim app-master klasörüne yerleştirildi.

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


-4

Docker Build Komut Biçimi

Powershell'inizde: Dockerfile dosyanızla bir yol belirtmediğiniz için bu tür bir hata var.

Bunu dene:

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

friendlyhello, kapsayıcınıza atadığınız ve sürümü eklediğiniz addır, yalnızca şunu kullanın :

-f C: \ TestDockerApp \ Dockerfile.txt - build komutu bir parametreye veya etikete ihtiyaç duyduğu için etiket eklemek istiyorsunuz - DockerFile, açık bir şekilde .txt uzantısını ekleyen bir metin belgesidir

** Bu biçimi deneyin:

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

1
Verdiğiniz komut aynı hatayla başarısız olmalıdır. .Bağımsız değişken olarak bir derleme bağlamı eklemeniz gerekir; genellikle a , geçerli dizinin derleme altyapısı olarak derleme bağlamına gönderilmesi gerektiğini belirtir.
BMitch
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.