Docker, konteynerları kullanarak uygulama oluşturmayı, dağıtmayı ve çalıştırmayı kolaylaştırmak için tasarlanmış bir araçtır. Kapsayıcılar, bir geliştiricinin bir uygulamayı kütüphaneler ve diğer bağımlılıklar gibi ihtiyaç duyduğu tüm parçalarla toplayıp ve onu tek bir paket olarak dağıtmasına izin verir. Bunu yaparak, kapsayıcı sayesinde, geliştirici, kodun yazılması ve test edilmesi için kullanılan makineden farklı olabilecek, makinenin sahip olabileceği özelleştirilmiş ayarlara bakılmaksızın uygulamanın başka bir Linux makinesinde çalışacağından emin olur.
Bir bakıma Docker biraz sanal bir makineye benziyor. Ancak sanal bir makineden farklı olarak, Docker tüm bir sanal işletim sistemi oluşturmak yerine, uygulamaların üzerinde çalıştıkları sistemle aynı Linux çekirdeğini kullanmasına izin verir ve yalnızca uygulamaların ana bilgisayarda zaten çalışmayan şeylerle gönderilmesini gerektirir. Bu, önemli bir performans artışı sağlar ve uygulamanın boyutunu azaltır.
Daha da önemlisi, Docker açık kaynak kodlu. Bu, herkesin Docker’a katkıda bulunabileceği ve konteyner dışında bulunmayan ek özelliklere ihtiyaç duyması durumunda kendi ihtiyaçlarını karşılamak için genişletebileceği anlamına gelir.
Docker kimler içindir?
Docker, hem geliştiricilere hem de sistem yöneticilerine fayda sağlayacak şekilde tasarlanmış bir araç olup, onu birçok DevOps (geliştirici + işlem) araç zincirinin bir parçası haline getirir. Geliştiriciler için, nihayetinde çalışacağı sistem hakkında endişelenmeden kod yazmaya odaklanabilecekleri anlamına gelir. Ayrıca, uygulamalarının bir parçası olarak bir Docker kapsayıcısında çalışmak üzere önceden tasarlanmış binlerce programdan birini kullanarak hızlı bir başlangıç yapmalarını sağlar. Operasyon personeli için Docker esneklik sağlar ve az yer kaplaması ve düşük ek yükü nedeniyle ihtiyaç duyulan sistem sayısını potansiyel olarak azaltır.
Başlangıç
İşte iş akışınızda Docker’ı kullanmaya başlamanıza yardımcı olacak bazı kaynaklar. Docker, temel Docker komutlarını deneyebileceğiniz ve nasıl çalıştığını anlamaya başlayabileceğiniz bir komut satırı simülatörü ile web tabanlı bir öğretici sağlar. Ayrıca Docker için bazı temel komutları ve konteyner terminolojisini tanıtan bir başlangıç kılavuzu da vardır.
Docker ve Güvenlik
Docker, paylaşılan bir ortamda çalışan uygulamalara güvenlik getirir, ancak kapsayıcılar kendi başlarına uygun güvenlik önlemleri almanın alternatifi değildir.
SELinux’daki çalışmaları ile tanınan bir bilgisayar güvenlik lideri olan Dan Walsh, Docker konteynerlerinin güvenli olduğundan emin olmanın önemi konusunda önemli ipuçları veriyor. Ayrıca şu anda Docker’daki güvenlik özelliklerinin ve işlevlerinin ayrıntılı bir dökümünü sunan çalışmaları mevcuttur.
Konteynerları Anlama
Kapsayıcılar, üç yazılım kategorisi gerektirdiği düşünülebilir:
Builder: Bir konteyner oluşturmak için kullanılan teknoloji.
Engine: Bir konteyneri çalıştırmak için kullanılan teknoloji.
Orchestration: Birçok konteyneri yönetmek için kullanılan teknoloji.
Konteyner kullanmanın cazibelerinden biri, incelikle kullanımdan kaldırılmış ve talep üzerine yeniden doğma yetenekleridir. Bir kapsayıcının kullanımının çökme nedeniyle veya sunucu trafiği düşük olduğunda artık gerekli olmadığından, kapsayıcıların başlaması ucuzdur ve sorunsuz bir şekilde görünecek ve kaybolacak şekilde tasarlanmıştır. Konteynerların kısa ömürlü olması ve gerektiği kadar sık yeni örnekler üretmesi amaçlandığından, bunları izlemenin ve yönetmenin bir insan tarafından gerçek zamanlı olarak yapılmaması, bunun yerine otomatikleştirilmesi beklenir.
Linux kapsayıcılar, yüksek kullanılabilirlikli hesaplamada büyük bir kaymayı kolaylaştırdı ve konteynerlarda hizmetleri (hatta tüm işletim sisteminizi) çalıştırmanıza yardımcı olacak birçok araç seti var. Docker, tedarikçinin kilitlenmesi tehlikesinden kaçınırken inovasyonu teşvik etmeyi amaçlayan bir endüstri standartları kuruluşu olan Open Container Initiative (OCI) tarafından tanımlanan birçok tercih arasında bir seçenektir. OCI sayesinde, Docker, OKD, Podman, rkt, OpenShift ve diğerleri de dahil olmak üzere bir konteyner aracı zinciri arasından seçim yapabilirsiniz.
Hizmetleri kapsayıcılarda çalıştırmaya karar verirseniz, muhtemelen bu kapsayıcıları barındırmak ve yönetmek için tasarlanmış yazılımlara ihtiyacınız vardır. Bu yaygın olarak konteyner düzenleme olarak bilinir. Kubernetes, çeşitli konteyner çalışma zamanları için konteyner düzenleme sağlar.