docker ENV ve RUN dışa aktarma karşılaştırması


92

Diyelim ki bu komutları birleştirmek istiyorum

RUN command_1
ENV FOO bar
RUN command_2

içine

RUN command_1 && export FOO=bar && command_2

ve değişkeni RUN exportvs ile ayarlamanın ENVeşdeğer olup olmadığını merak ediyordum .

Başka bir deyişle, bir Dockerfile'da bu komutlar arasında bir fark var mı?

ENV FOO bar

vs

RUN export FOO=bar

Yanıtlar:


149

Sayı 684'te gösterildiği gibi , exportgörüntülerde kalıcı olmayacak. (Her Dockerfile yönergesinin bir ara görüntüye işlenmiş bir ara kap oluşturacağını unutmayın: bu görüntü dışa aktarılan değeri korumaz)
ENV:

Kullanılarak ayarlanan ortam değişkenleri ENV, elde edilen görüntüden bir kap çalıştırıldığında kalıcı olacaktır.
Değerleri ile görüntüleyebilir ve kullanarak docker inspectdeğiştirebilirsiniz docker run --env <key>=<value>.

Sorun şunu gösteriyordu:

RUN export PATH=$PATH:/foo/bar # from directly in builder

Yaptığım docker run [img] bash -c 'echo $PATH'zaman asla içermiyor /foo/bar.

Dene

Şunları içeren yeni bir dockerfile oluşturun:

FROM centos:6
ENV FOO=foofoo
RUN export BAR=barbar
RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"

Sonra inşa edin. Son adımın çıktısı:

Step 4/4 : RUN export BAZ=bazbaz && echo "$FOO $BAR $BAZ"
 ---> Running in eb66196b238d
foofoo  bazbaz

Görebilirsin:

  • FOOENVanahtar kelime sayesinde ara kaplarda devam eder ;
  • BARexportkomut nedeniyle bir sonraki adımda ısrar etmez ;
  • BAZ değişken aynı kapta kullanıldığından doğru şekilde görüntüleniyor.

(Sanırım evet, ama :) Bu, dockerörneğin bu (bu seçenek argümanlarıyla) değişkenlerle runbirlikte --env-fileveya dışarı aktarılacağı anlamına mı geliyor --env? Bu kadar eski bir cevabı bulduğum için üzgünüm ama bir web araştırması bunu aklıma getirdi. Güzel cevap btw.
hakre

@hakre evet, ortama eklenirler: bkz. stackoverflow.com/a/49872152/6309 ve altı.
VonC

Hızlı yanıt için teşekkürler, ancak bu yanıt değişkenlerin dışa aktarılmak üzere işaretlendiğini göstermiyor. En azından bana değil. Her neyse, burada kendi ödevimi yapmalıyım, örneğin superuser.com/q/450868/63279 veya pubs.opengroup.org/onlinepubs/9699919799/utilities/… .
hakre
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.