‫Resminizi yaratmak için bir reçete olan Dockerfile'ye dalalım.
‫Şimdiye kadar, kullandığımız Docker görüntülerinin tümü, Docker Hub'ında bakabileceğiniz
‫Dockerfiles'den oluşturuldu.
‫Depoyu ilk bölümde listelenen kaynaklardan kopyaladıysanız, bir liman dairesi örnek dosyası 1 dizini görmeli
‫ve orada sadece bir dosya olmalıdır. Donör Dosyası.
‫Satır sırasına gideceğiz ve bu farklı stanzalar hakkında konuşacağız. Bir Docker dosyası bir kabuk komut
‫dosyasına benziyor ancak değil.
‫Bu bir toplu iş dosyası değil, kabuk betiği değil. adı Dockerfile ve büyük harf D'dir.
‫Docker'a özgü tamamen farklı bir dosya dili ve varsayılan
‫Ancak, komut satırından, docker komutunu kullanarak bir Docker dosyası ile
‫uğraşmanız gerektiğinde, aslında tire f'yi kullanabilirsiniz. Aslında Docker ile çok sayıda araç arasında yaygın
‫olan, varsayılandan farklı bir dosya belirtmek için tire f'yi kullanabilirsiniz.
‫Yani, ilk önce from komutu. From komutu her Docker dosyasında bulunur. Orada olması gerekiyor.
‫Normalde minimal bir dağılım.
‫Bu durumda Debian var.
‫Ancak günümüzde defalarca Alpin olacak.
‫Ve gerçekten bunları kullanmanızın nedeni kendinize zaman ve acıdan kurtarmanızdır. Çünkü bu asgari dağılımlar onlardan bir
‫sanal makine kurmak için kullanacağınız CD'lerden çok daha küçüktür.
‫Örneğin, bir Ubuntu kurulumunu bir VM'ye yüklediyseniz, cURL ve daha
‫bir çok komut zaten yüklenmiş olurken, Ubuntu'da cURL bulunmamaktadır.
‫Tüm bu dağıtımlar resmi resimlerdir, bu da, en son güvenlik yamalarıyla
‫her zaman güncel olacakları anlamına gelir; onlara güvenebilir ve güvenebilirsiniz.
‫Ve onları konteynırlarda kullanmanın ana faydalarından biri, paketinizde ihtiyacınız olan yazılımı yüklemek
‫için paket dağıtım sistemlerini kullanmaktır.
‫Bu durumda, aslında iki nokta üst üste gelenlerin ardındaki Jessie sürümünü kullanıyoruz.
‫Ayrıca, Docker Hub sohbetimizden hatırladığınız gibi burada Debian deposu için belirtebileceğiniz
‫çok sayıda seçenek var.
‫Sonra, ENV standardı var ve ENV çevre değişkenleri içindir.
‫Bu, aslında konteynerler için çok önemli olan ortam değişkenlerini ayarlamanın bir
‫yoludur, çünkü konteyner oluşturma ve konteynırları çalıştırmak için anahtarları ve değerleri ayarlamanın ana yolları budur.
‫Bu durumda, aslında Nginx'in kurulmasını istediğimiz sürümünü belirliyor ve bu çevre
‫değişkeni, sonraki satırların da kullanabileceği şekilde ayarlanacak.
‫Şimdi, önceki derslerden bir hatırlatma olarak, bu stanzların her biri Docker imajımızda gerçek
‫bir katman.
‫Dolayısıyla bunların sırası gerçekten önemlidir çünkü yukarıdan aşağıya çalışır.
‫Gelecekteki nispeten uzun sürüş komutuyla burada göreceğiniz gibi. Uzun bir emre
‫benzediğini göreceksin.
‫Yaptığı şey, kabuk komutlarını yalnızca onu oluşturan kabın içinde
‫çalıştırmaktır.
‫göreceksiniz veya bazı sıkıştırılmamış veya konteynerin içindeki bazı dosya düzenlemeleri yapmanız gerekecektir.
‫Yazılımı bir paket deposuyla yüklemeniz gerektiğinde, genellikle çalıştırma komutlarını
‫Çalıştır komutları, dosya içerisinde daha önce kopyaladığınız kabuk komut dosyalarını veya dosyadaki
‫o noktada kapsayıcı içerisinden
‫erişebileceğiniz komutları da çalıştırabilir.
‫Debian'dan geldiğimiz için bu çalıştırma komutu, bu sürümle birlikte kurulmuş olan tüm komutlara
‫ve ikili dosyalara erişebilir.
‫Nginx için bu komut listesinde az çok Nginx deposunu
‫resmi Nginx deposundan yükleyebileceğiniz bir anahtarı depoya eklersiniz.
‫Burada iyi Docker dosyalarını hazırlamanın en önemli yeri olan birkaç şey var ve bu konuyu
‫daha sonra en iyi uygulamalar hakkında konuşacağımız bir sonraki bölümde konuşacağız.
‫Ancak dikkat edilmesi gereken iki nokta var.
‫Bütün bu komutları çiftli ampersand ile buraya eklememizin nedeni,
‫birbiri ardına zincirlendiğidir, çünkü hatırlarsanız, her birimin kendi katmanıdır.
‫Bu, tüm bu komutların tek bir katmana sığdırılmasını sağlar.
‫Bize biraz zaman kazandırıyor.
‫Bize alan kazandırıyor. Ve o kadar çok yaygındır ki, bunu Docker Hub'daki her Docker dosyasında görebilirsiniz.
‫Tamam, 27 hattında başka bir çalıştırma emrimiz var.
‫Bu, günlük dosyalarımızı stdout'a ve stderr'e işaret
‫etmekle alakalıdır.
‫Daha sonra göreceğimiz üzere, bir kapsayıcıda oturum açmak için uygun yol, bir günlük dosyasına girilmemesidir. Ve bir konteyner içinde herhangi bir
‫syslogd veya başka bir syslog
‫hizmeti yok. Liman, aslında bizim için tüm günlük kayıtlarını biz halleder. Konteynerin içinde yapmamız gereken tek
‫şey, günlüklerde yakalanmak istediğimiz her şeyin stdout ve stderr için tükürüldüğünden ve diğer istihkamın
‫liman işçilerinin elinden alacağından emin olmaktır.
‫Aslında, Docker Motorunda, ana makinemizdeki tüm konteynırların tüm kayıtlarını kontrol etmek için
‫kullanabileceğimiz sürücüleri günlüğe kaydediyoruz.
‫Ve onlarla gerçekten yapmak istediğiniz şey budur.
‫Uygulamanız aslında günlüğe kaydetme işlemini yapıyorsa, uygulamanıza daha karmaşıklık kazandırır.
‫Ve her kapsayıcıdaki dosyalarla uğraşmak zorunda kalırsanız, şimdi bu dosyaları nasıl dışarı
‫çıkarırsınız ve aranabilir ve erişilebilir bir sorununuz var demektir. Burada varsayılan Nginx günlüklerini alıyoruz ve
‫aslında bunları standart çıktıyla bağlantılıyoruz.
‫Docker bunları yakalayabilir.
‫Ayrıca bir açıklama komutu var.
‫Varsayılan olarak, bir kapsayıcı içinde hiçbir TCP veya
‫UDP bağlantı noktası açık değildir. Burada listelediğimiz sürece, kapsayıcıdan sanal bir ağa herhangi bir
‫şey göstermez.
‫Ve elbette, çünkü bu bir Web ve proxy sunucusu, 80 ve 443'ü açığa çıkartacak.
‫Şimdi, bu açıklama komutu, bu bağlantı noktalarının otomatik olarak ev sahibimizde açılması anlamına gelmiyor.
‫Liman işletmecisini kullandığımızda çizgi P komutu budur.
‫Son olarak CMD'yi burada bulabilirsiniz. komut olan gerekli bir parametredir.
‫CMD, resimden yeni bir kap başlattığınızda veya duran bir kapta her başlatışınızda çalıştırılacak son
‫Tüm bu stanzalar hakkında gerçekten mükemmel belgeler var, artı dokümanlardaki Docker dokümantasyon web sitesinde
‫daha ileriye gidiyoruz. liman işçisi. com,
‫bu dersin kaynaklarını bulabilirsiniz.
‫Pekâlâ, bunlar temel özellikler değil mi? Bu beş farklı stanza, her tek Docker dosyasında oldukça normaldir.
‫Bazıları zorunludur.
‫Bunlardan bazıları, koşu ve ENV ve maruz kalma gibi isteğe bağlıdır, ancak görüntüler oluşturacağınız
‫çoğu konteyner için oldukça tipiktirler.