Dockerfile ile yerel bir görüntüyü temel görüntü olarak nasıl kullanabilirim?


126

Bir dockerfile üzerinde çalışıyorum. En başından beri FROMindekslenmiş resimlerle kullandığımı fark ettim .

Bu yüzden merak ediyorum:

  • Yerel (özel) resimlerimden birini, indekse FROMeklenmeden temel ( ) resmim olarak nasıl kullanabilirim pushing?

Yanıtlar:


148

Özel bir şey yapmadan kullanabilirsiniz. Eğer yerel bir görüntünüz blahvarsa yapabilirsiniz FROM blah. Bunu yaparsanız FROM blahsizin Dockerfile içinde ama yok denilen yerel bir imaja sahip blah, daha sonra Docker kayıt defterinden çekin çalışacaktır.

Başka bir deyişle, bir Dockerfile varsa FROM ubuntu, ancak resmi olandan ubuntufarklı olarak adlandırılan yerel bir görüntünüz varsa , görüntünüz onu geçersiz kılacaktır.


5
benim için çalışmıyor - boot2docker ile ilgili bir sorun olabilir mi? En son sürüm
1.3.1'e sahibim

@Anentropic boot2docker 1.5 kullanıyorum. bash-4.3 $ docker görüntüleri DEPOSU ETİKETİ GÖRÜNTÜ KİMLİĞİ OLUŞTURULDU SANAL BOYUT ubuntu1504gcc484 en son 0378ea1c0b6c 19 saat önce 1,36 GB Ve diğer Dockerfile dosyamda "FROM ubuntu1504gcc484" yapılıyor ve bu gayet iyi çalışıyor. (Kötü biçimlendirme için özür dileriz)
Pejvan

Artık bilmiyorum, ben de şimdi
1.5'deyim

1
Bir görüntü oluşturdum ve yerel kayıt defterimiz için etiketledim. Bu şekilde etiketlendiğinde, onu yalnızca adla bulmaz ve tam ad kayıt defterini içerir, böylece bu şekilde başvurursanız etiketi oraya getirir. Adın basit biçimiyle tekrar etiketleyebilirsiniz ve kayıt defterine bakmadan önce bulacaktır. Benim için çalıştı.
Gerry Gleason

1
Hayır, bu yanlış. Docker, içinde yerel olarak aynı ada sahip bir imajım olmasına rağmen uzak bir kayıt defterinden bir imaj çekmeye çalışıyor docker image list.
John Smith İsteğe Bağlı

16

Doğrulandı: Docker 1.7.0'da iyi çalışıyor.

BTW, komutu --pull=trueçalıştırırken belirtmeyin docker build:

Eğer taban görüntüsü olarak yerel resmi kullanmak istiyorsanız, seçeneği olmadan lütfen --pull=true, --pull=trueher zaman görüntünün daha yeni bir sürümünü çekmeye çalışacaktır.

- https://github.com/docker/docker/issues/14943


4
Görüntünüzün adında bir -karakter varsa ( my-imageörneğin), o zaman docker'ınız bu görüntüyü yerel olarak çözmez, nedenini bilmiyorum, yine de düzeltmek için -karakter kullanmayın , docker-compose 1.8 ve docker 1.11 üzerinde test edilmiştir
deFreitas

1
Üzerinde tireli bir adla ilgili bir sorun yaşamadım Docker version 17.06.2-ce, build cec0b72, ancak resminizi etiketlediyseniz, etiketi resim belirtiminin bir parçası olarak eklediğinizden emin olun (FROM localimage: etiket).
Scott

@deFreitas doğru gibi görünüyor, adında tire olan bir imajım var ve Docker yerel olarak bu isimde bir imaja rağmen onu uzaktaki bir kayıt defterinden çekmeye çalışıyor. İsimdeki kısa çizgilerle ilgili bu kuralın doğru olduğu ortaya çıkarsa, bu saf delilik olur.
John Smith İsteğe Bağlı

@deFreitas: Son yorumumun ardından, kısa çizgilerin alt çizgisini denedim ve aynı sorunu yaşadım, docker yerel görüntünün mevcut olmasına rağmen görüntüyü uzaktan çekmeye çalışıyor. Benim durumumda en azından kısa çizgiler sorun değil.
John Smith İsteğe Bağlı

4

Resimlerinizde - karakter olabilir. 7.3.1611 etiketli centos-base-image adında yerel bir görüntünüz (yerel bir kayıt defteri değil) olduğunu varsayalım.

docker version 
      Client:
       Version:         1.12.6
       API version:     1.24
       Package version: docker-common-1.12.6-16.el7.centos.x86_64
       Go version:      go1.7.4

      Server:
       Version:         1.12.6
       API version:     1.24
       Package version: docker-common-1.12.6-16.el7.centos.x86_64
       Go version:      go1.7.4

docker images
 REPOSITORY            TAG
 centos-base-image     7.3.1611

Dockerfile

FROM centos-base-image:7.3.1611
RUN yum -y install epel-release libaio bc flex

Sonuç

Sending build context to Docker daemon 315.9 MB
Step 1 : FROM centos-base-image:7.3.1611
  ---> c4d84e86782e
Step 2 : RUN yum -y install epel-release libaio bc flex
  ---> Running in 36d8abd0dad9
...

Yukarıdaki örnekte FROM, yerel görüntünüzü getirirken, özel kayıt defterinizden bir görüntüyü getirmek için ek talimatlar sağlayabilirsiniz (örn. FROM localhost:5000/my-image:with.tag). Bkz. Https://docs.docker.com/engine/reference/commandline/pull/#pull-from-a-different-registry ve https://docs.docker.com/registry/#tldr

Son olarak, bir ad sağlarken resminiz çözülmezse , resmi oluştururken resme bir etiket eklemeyi deneyin .

Bu GitHub dizisi, yerel görüntüleri ada göre bulamama gibi benzer bir sorunu açıklar .

Docker, belirli bir etiketi atlayarak "en yeni" olarak etiketlenmiş bir görüntü arayacaktır, bu nedenle ya: en son etiketiyle bir görüntü oluşturun ya da FROM'unuzu değiştirin


0

Yalnızca etiketi değil, aynı zamanda bu etiketin bulunduğu depoyu da şu şekilde koymayı unutmayın:

docker images
REPOSITORY                                TAG                       IMAGE ID            CREATED             SIZE
elixir                                    1.7-centos7_3             e15e6bf57262        20 hours ago        925MB

Buna şu şekilde referans vermelisiniz:

elixir:1.7-centos7_3
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.