Bir Dockerfile CMD yazın ve GİRİŞ arasındaki fark nedir?
Bana benzeyen iki komut vardır Dockerfiles: CMD
ENTRYPOINT
. Ama bir (ince?) var sanırım aralarındaki fark, başka herhangi bir anlamda aynı şey için iki komut var.
Belgeleri CMD
Birleşik Devletleri
Bir CMD temel amacı yürütülen bir konteyner için varsayılan sağlamaktır.
ENTRYPOINT
için:
Bir GİRİŞ noktası, bir yürütülebilir olarak çalıştırmak için bir kapsayıcı yapılandırmak için yardımcı olur.
Bu iki komut arasındaki fark nedir?
CEVAP
Docker /bin/sh -c
varsayılan bir giriş noktası vardır, ancak varsayılan bir komut yok.
Böyle docker çalıştırdığınızda:
docker run -i -t ubuntu bash
girişnoktası /bin/sh -c
görüntü ubuntu
komut bash
varsayılan ayardır.
Bu komut giriş noktası ile çalışır. yani, infaz ediliyor, bu gerçek bir şey /bin/sh -c bash
. Bu docker RUN
çabuk kabuk ayrıştırıcı dayanarak uygulamak için izin verdi.
Daha sonra, insanlar ENTRYPOINT
-entrypoint
getirilmiştir yani bu özelleştirmek için güçlü olmak istedi.
Yukarıdaki örnekte ubuntu
sonra her şeyi komut ve giriş noktası geçirilir. CMD
talimat kullanırken, eğer docker run -i -t ubuntu <cmd>
yapsaydın tam olarak. <cmd>
giriş parametresi olacak.
Ayrıca senin yerine bu komut docker run -i -t ubuntu
yazarsanız aynı sonucu elde edersiniz. Hala ubuntu Dockerfile varsayılan CMD belirtilen çünkü konteynır bash bir kabuk başlar: CMD ["bash"]
Her giriş noktası geçirilir gibi, görüntüleri çok güzel bir davranış olabilir. @Jiri örnek iyi bir görüntü sağlar"". ikili Kullanırken ["/bin/cat"]
olarak giriş noktası ve o zaman ne docker run catimg /etc/passwd
, olsun, /etc/passwd
komut ve iletilir giriş noktası kadar sonuçta yürütme sadece /bin/cat /etc/passwd
.
Başka bir örnek, herhangi bir cli olarak giriş noktası var. Örneğin, eğer redis bir görüntü varsa, kaçmak yerine docker run redisimg redis -H something -u toto get key
sadece ENTRYPOINT ["redis", "-H", "something", "-u", "toto"]
ve aynı sonucu böyle çalıştırın olabilir: docker run redisimg get key
.
Bir URI, URL ve URN arasındaki fark ne...
Aramak ve uygulamak arasındaki fark ne...
@Staticmethod ve @Python classmethod a...
Match_parent ve fill_parent arasındaki...
Varchar ve nvarchar arasındaki fark ne...