Dockerfile'da resim adı nasıl ayarlanır?


299

Özel bir görüntü oluştururken aşağıdaki gibi resim adını ayarlayabilirsiniz:

docker build -t dude/man:v2 . # Will be named dude/man:v2

Dockerfile'da görüntünün adını tanımlamanın bir yolu var mı, bu yüzden docker buildkomutta bahsetmeme gerek yok mu?


1
Merak eden herkes için, FROM kullanarak ... AS adı çalışmıyor
Rufus

Yanıtlar:


267

Görüntünün etiketlenmesi Dockerfile içinde desteklenmez. Bunun build komutunuzda yapılması gerekir. Geçici bir çözüm olarak, derlemeyi hedef görüntü adını tanımlayan bir docker-compose.yml ile yapabilir ve ardından a çalıştırabilirsiniz docker-compose build. Örnek bir docker-compose.yml

version: '2'

services:
  man:
    build: .
    image: dude/man:v2

Bununla birlikte, sürüsü mod dağıtımları ile çalışmadığı için oluşturma işlemini oluşturmaya karşı bir itme var. Böylece, sorunuzda belirttiğiniz şekilde komutu çalıştırmaya geri dönüyorsunuz:

docker build -t dude/man:v2 .

Şahsen, klasörümde (build.sh) herhangi bir argümanı geçen ve yazmayı kaydetmek için görüntünün adını içeren küçük bir kabuk komut dosyası ile oluşturma eğilimindeyim. Ve üretim için, yapı, boru hattı komut dosyasının içinde görüntü adına sahip bir ci / cd sunucusu tarafından işlenir.


303

Yml dosyası kullanmadan özel adla bir görüntü nasıl oluşturulur:

docker build -t image_name .

Özel adla bir kapsayıcı nasıl çalıştırılır:

docker run -d --name container_name image_name

78
Daha fazla yorum yapmayacağım ama soru "Dockerfile'da resim adı nasıl ayarlanır?" "Docker görüntü adı nasıl ayarlanır?" Bu cevap sorunun kendisindeydi.
Novaterata

68
Birkaç kez buna geri döndüm ve teknik olarak konu dışı olmasına rağmen bu cevap yardımcı oldu
gdbj

7
DockerfileGörüntünüz için istediğiniz ada sahip bir dizine koyma konusunda tutarlıysanız docker build -t $(basename $PWD) ., build komutunuz olarak kullanabilirsiniz . Sonra komutu bulmak ve yeniden kullanmak için CTRL-R aramasını "build" kullanabilirsiniz ve asla düzenlemek zorunda kalmazsınız. İsterseniz bunu bir takma ad da yapabilirsiniz.
Bruno Bronosky

Bu cevap için yine de teşekkürler. internet üzerinden almak için birkaç saat geçirdim. Doğru bir cevap alamadım, imajına isim veren biri, kabına da isim vermesi gerekiyorsa, bu olmadan daha fazla ilerleyemez.
Susaj S Nair

38

Belirli bir docker dosyasına başvurmanız gerekiyorsa başka bir sürüm:

version: "3"
services:
  nginx:
    container_name: nginx
    build:
      context: ../..
      dockerfile: ./docker/nginx/Dockerfile
    image: my_nginx:latest

Sonra sadece kaçıyorsun

docker-compose build

1
Bu cevabın container_name ve image name: tag arasındaki farkı göstermesini seviyorum. Neler olup bittiğine dair biraz daha açıklama varsa: "container_name", sonuçta görüntüden döndürülen konteyneri adlandırır. "image", kabın oluşturulduğu görüntüyü adlandırır ve etiketler. Diğerlerinin de belirttiği gibi, OP'nin istediği gibi Dockerfile'dan görüntü adı belirtilemez, bunun yerine docker-compose.yml dosyasını kullanırız ve "docker-compose up -d --build" ile çalıştırırız
Sean McCarthy

-7

Bunu ubuntu'dan 'AS' kullanarak yapabilirsiniz: 16.04 AS FooImage


6
ASSözdizimi çok aşamalı yapı kullanılan hedef adını belirtir ve bu isim aynı zamanda bir resmin yerine kullanılabilecek COPY --frombu çok aşamalı yapı içinde sözdizimi. Ancak, yapının kendisi için sonuçta adı / etiketi belirtmez.
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.