[Not, bu yanıt Linux kapsayıcılarına odaklanır ve diğer işletim sistemleri için tam olarak geçerli olmayabilir. ]
Konteyner nedir?
Bu bir Uygulama : Bir konteyner, birbirinden izole edilmiş uygulamaları çalıştırmanın bir yoludur. Donanımı birden çok işletim sistemini çalıştırmak için sanallaştırmak yerine, kapsayıcılar birden çok uygulamayı çalıştırmak için işletim sistemini sanallaştırmaya dayanır. Bu, aynı donanım üzerinde VM'lerden daha fazla kapsayıcı çalıştırabileceğiniz anlamına gelir çünkü çalışan işletim sisteminin yalnızca bir kopyası vardır ve uygulamanızın her bir örneği için bellek ve CPU çekirdeklerini önceden tahsis etmeniz gerekmez. Tıpkı diğer uygulamalar gibi, bir konteyner CPU veya Belleğe ihtiyaç duyduğunda, bunları ayırır ve bittiğinde bunları serbest bırakır ve diğer uygulamaların aynı sınırlı kaynakları daha sonra kullanmasına izin verir.
Çekirdek ad alanlarından yararlanırlar : Her konteyner varsayılan olarak aşağıdakilerin ad alanlı olduğu bir ortam alır:
- Bağla:
/
kapsayıcıdaki dosya sistemleri, /
ana bilgisayardakinden farklı olacaktır .
- PID: işlem kimlikleri, konteynırdaki pid 1 başlatılan uygulamanızdır, bu pid ana bilgisayardan görüntülendiğinde farklı olacaktır.
- Ağ: konteynerler, varsayılan olarak kendi geri döngü arayüzleri (127.0.0.1) ve özel bir IP ile çalışır. Docker, birden çok kapsayıcıyı kendi özel lanında birbirine bağlamak için Linux köprü ağları gibi teknolojileri kullanır.
- IPC: işlemler arası iletişim
- UTS: bu, ana bilgisayar adını içerir
- Kullanıcı: İsteğe bağlı olarak, tüm kullanıcı kimliklerini ana bilgisayarınkinden uzak olacak şekilde değiştirebilirsiniz.
Bu ad alanlarının her biri, siz bu yalıtımı açıkça kaldırmadığınız sürece, bir kapsayıcının dosya sistemi veya ana bilgisayardaki veya diğer kapsayıcılardaki işlemler gibi şeyleri görmesini de engeller.
Ve diğer Linux güvenlik araçları : Kapsayıcılar ayrıca SELinux, AppArmor, Capabilities ve Seccomp gibi diğer güvenlik özelliklerini kullanarak, kapsayıcı içindeki kök kullanıcı da dahil olmak üzere kullanıcıların kapsayıcıdan kaçmasını veya ana bilgisayarı olumsuz etkilemesini sınırlar.
Uygulamalarınızı taşınabilirlik için bağımlılıkları ile paketleyin : Bir uygulamayı bir kapsayıcıda paketlemek, yalnızca uygulamanın kendisini değil, aynı zamanda bu uygulamayı çalıştırmak için gereken tüm bağımlılıkları taşınabilir bir görüntüde birleştirmeyi içerir. Bu görüntü, bir kapsayıcı oluşturmak için kullanılan temel dosya sistemidir. Yalnızca uygulamayı izole ettiğimiz için, bu dosya sistemi tüm bir işletim sistemini sanallaştırmak için gerekli olan çekirdeği ve diğer işletim sistemi yardımcı programlarını içermez. Bu nedenle, bir kapsayıcı için bir görüntü, eşdeğer bir sanal makine için olan bir görüntüden önemli ölçüde daha küçük olmalıdır ve bu, ağdaki düğümlere dağıtılmasını daha hızlı hale getirir. Sonuç olarak konteynerler, uygulamaları buluta ve uzak veri merkezlerine dağıtmak için popüler bir seçenek haline geldi.
Geliştirmeye adanmış bir sanal makinenin yerini alabilir mi?
Şuna bağlıdır : Geliştirme ortamınız Linux çalıştırıyorsa ve donanım cihazlarına erişmeniz gerekmiyorsa veya fiziksel donanıma doğrudan erişiminiz kabul edilebilirse, o zaman bir Linux kapsayıcısına geçişi oldukça basit bulursunuz. Docker container için ideal hedef, ağ üzerinden eriştiğiniz web tabanlı API'ler (örneğin bir REST uygulaması) gibi uygulamalardır.
Basit bir deyişle, şirketlerde Docker kullanmanın amacı nedir? Asıl avantajı ?
Dev veya Ops : Docker, genellikle iki yoldan birinde bir ortama getirilir. Uygulamalarını daha hızlı geliştirmenin ve yerel olarak test etmenin bir yolunu arayan geliştiriciler ve daha az donanım üzerinde sanal makinelerde mümkün olandan daha fazla iş yükü çalıştırmayı amaçlayan işlemler.
Veya Devops : İdeal hedeflerden biri, Docker'ı CI / CD dağıtım aracından hemen kullanmak, uygulamayı derlemek ve geliştirme, CI, prod vb. İçin dağıtılan bir imajı hemen oluşturmaktır. Konteynerler genellikle uygulamayı taşıma süresini azaltır kod girişinden test için hazır olana kadar, geliştiricileri daha verimli hale getirir. Doğru tasarlandığında, geliştiriciler ve CI araçları tarafından test edilen ve onaylanan aynı görüntü üretimde kullanılabilir. Bu görüntü tüm uygulama bağımlılıklarını içerdiğinden, geliştirme aşamasında işe yarayan bir şeyin üretimde kırılma riski önemli ölçüde azalır.
Ölçeklenebilirlik : Bahsedeceğim kapsayıcıların son bir önemli faydası, yatay ölçeklenebilirlik göz önünde bulundurularak tasarlanmış olmalarıdır. Ağır yük altında durum bilgisi olmayan uygulamalarınız olduğunda, daha küçük görüntü boyutları ve azaltılmış ek yükleri nedeniyle kapsayıcıların ölçeklendirilmesi çok daha kolay ve daha hızlıdır. Bu nedenle, kapsayıcıların Google ve Netflix gibi birçok büyük web tabanlı şirket tarafından kullanıldığını görüyorsunuz.