Yöneticim ona Yazılım geliştirme endüstrisinde devrim yaratan en önemli şeyi sorduğumda açıkça " Konteynerizasyon " dedi. Konteynerizasyon olmasaydı, günümüz yazılımının hızlı ölçeklendirilmesinin ve küresel dağıtımının çok daha zorlu bir zorluk olacağını savundu. Bugün kullanımda olan yazılımların neredeyse tamamının çeşitli kapasitelerde kapsayıcılaştırmadan yararlandığını ve modern yazılım ekosistemini güçlendirmedeki vazgeçilmez rolünün altını çizdiğini belirtmek dikkate değerdir!
Bilmeyenler için işte AWS'nin web sitesinden bir tanım ~
*“Containerisation is a software deployment process that bundles an application's code with all the files and libraries it needs to run on any infrastructure. Traditionally, to run any application on your computer, you had to install the version that matched your machine's operating system.”*
Görüntüler, kapların oluşturulmasına rehberlik eden planlara benzer şekilde, kaplar için yapı taşları görevi görüyor. Bu nedenle, hafif ve akıcı konteyner görüntülerinin sürdürülmesi, dağıtım sürecini hızlandırır ve bu görüntülerin dağıtımını kolaylaştırır. Docker görüntülerinizi optimize ederek yalnızca genel geliştirme döngüsünü hızlandırmakla kalmaz, aynı zamanda mevcut güvenlik önlemlerini de güçlendirerek daha sağlam ve verimli bir yazılım ortamı sağlarsınız.
Bu makalede, etkili Docker görüntüleri oluşturmak ve sonuçta uygulamanızın verimliliğini artırmak için çeşitli yöntemleri inceleyeceğiz.
Konteyneri Sanal Makineler (VM'ler) gibi ele almak ve birden fazla uygulamayı tek bir konteyner içinde paketlemek yaygın bir hatadır. Bu uygulamanın konteynerinizin boyutunu arttırırken başka dezavantajları da vardır.
Bir konteynerin, çalıştırdığı uygulamayla yakından ilişkili bir kullanım ömrüne sahip olması beklenir. Kapsayıcı, uygulama başladığında başlamalı ve uygulama bittiğinde durmalıdır. Docker ve Kubernetes gibi konteyner düzenleme çözümleri, konteynerlerin bu özelliğine büyük ölçüde güveniyor. Bir kapsayıcı çok sayıda uygulama çalıştırıyorsa düzenleme araçları uygulamanızı tanımlayamayacak ve yeniden başlatamayacaktır!
Görüntüler katmanlardan oluşur ve Dockerfile'ınızdaki her talimat yeni bir katman ekler. Docker gibi konteynerleştirme teknolojileri, yapım süresini kısaltmak için mümkün olan her yerde önceki yapılardan gelen katmanları yeniden kullanmaya çalışacak. Bir katmanın önbelleği, yalnızca önceki derlemelerden bu yana alttaki katmanlardan hiçbiri değişmediyse kullanılabilir.
İmaj oluşturma hızını arttırmak için aşağıda sık sık değişebilecek talimatları Dockerfile'ınıza yerleştirmek faydalı olacaktır. Bu yaklaşım, Docker'ın önbellekleme sisteminden daha etkili bir şekilde yararlanmasını sağlar. Örneğin, kaynak kodu sık sık değiştiğinden, sürecin sonuna doğru onu görsele kopyalamanız önerilir.
Resimlerinizi daha hafif hale getirmese de oluşturma sürecinin hızlı ilerlemesini sağlar!
Çoğu zaman, konteyner görüntüleri gereksiz araçlar içerir ve bu da görüntü şişkinliğine ve olası güvenlik açıklarına yol açar. Örneğin, netcat
gibi araçlar, yetkisiz erişim elde etmeleri durumunda bilgisayar korsanları tarafından kapsayıcınızda kötü amaçlı faaliyetler gerçekleştirmek için kullanılabilir.
Kapsayıcı görüntünüzle birlikte gönderilen araç ve kitaplık setinin titizlikle korunması, güvenlik tehditlerinin azaltılmasına önemli ölçüde yardımcı olabilir ve ayrıca görüntülerin daha ince olmasını sağlar. Daha küçük görseller daha hızlı indirilir, bu da kapsayıcının daha hızlı başlatılacağı anlamına gelir.
FROM komutunda referans aldığımız görüntüye temel görüntü adı verilir. Temel görüntü, oluşturulan son görüntünün boyutunu büyük ölçüde belirler. İmajımızın son boyutunu küçültmek için mümkün olan en küçük temel imajı kullanmaya çalışmalıyız.
Boyutları daha küçük olduğundan ve genellikle geliştirme faaliyetini desteklemek için yeterli araç içerdiğinden, mümkün olan her yerde dağ görsellerini kullanmaya çalışın.
Küçük bir görsel ihtiyacınız olan tüm araçları içermese bile onu kullanmak daha iyi bir seçenek olabilir. İhtiyacınız olan paketleri daha hafif temel görüntünün üzerine kurmak, yine de daha ağır görüntünün kullanılmasından tasarruf sağlayabilir.
Kaynak kodunu kopyalarken istenmeyen dosya ve klasörlerin çoğu da kopyalanabilir. Bu, görüntünüzün boyutunu artırır ve sonuçta şişkinliğe yol açar. Kopyalanan dosya miktarını en aza indirmeye çalışın ve bunları minimumda tutmaya çalışın.
Konteyner görsellerini optimize etmenin ve en iyi uygulamaları oluşturmanın önemi sektörümüzde sıklıkla göz ardı ediliyor. Ancak bu uygulamalara bağlı kalmanın getireceği önemli faydalar göz ardı edilemez. Geliştiriciler olarak ince ve hızlı kapsayıcı görüntülerin oluşturulmasına sürekli olarak öncelik vermek çok önemlidir.
Böylece bu makalenin sonuna geliyoruz. Umarım okurken keyif almışsınızdır!