Yazılım geliştirme dünyası o kadar hızlı büyüyor ve genişliyor ki, her gün yeni platformlar ve araçlar popüler hale geliyor. Docker bunlardan biri ve yeni nesil geliştiricilerin önünü açıyor. Bu yazıda, Docker ve Docker Container ne olduğunu, faydalarını, nasıl kullanılacağını ve diğer detayları keşfedeceğiz. O halde daha fazla gecikmeden Docker Container genel bakışımızın derinliklerine inelim.
Size ve bilgi seviyenize çok karmaşık geliyorsa, sonuna kadar okuyun çünkü makalenin altında yeni başlayanlar, vatandaş geliştiriciler ve herkes için daha uygun olabilecek daha basit, no-code bir alternatif sunuyoruz. bir uygulamayı en kolay ve hızlı bir şekilde geliştirmesi gereken kişi.
Docker Container nedir?
Docker Container ne olduğunu tartışmadan önce bir adım geri Docker ne olduğundan bahsetmemiz gerekiyor. Docker, geliştiriciler için açık kaynaklı bir platformdur. Docker ile uygulama, tüm bağımlılıkları ile kaplar şeklinde paketlenebilir. Bu sistemle, her uygulama yalıtılmış bir ortamda çalışabilir: her kapsayıcı bağımsızdır ve bağımlılıkları ve kitaplıkları ile uygulamayı içerir. Bu şekilde uygulamalar birbirini etkilemez ve geliştirici her biri üzerinde bağımsız olarak çalışabilir. Docker Container, ekip çalışması söz konusu olduğunda da önemli ve faydalıdır.
Örneğin bir geliştirici, bir kapsayıcı geliştirebilir ve onu ekibe aktarabilir. Ekip, ilk programcı tarafından geliştirilen tüm ortamı çoğaltarak kabı çalıştırabilecektir.
Docker Mimarisi
Docker, aşağıdaki "tuğlalarla" çalışan bir istemci-sunucu mimarisi dağıtır:
- Docker Daemon: Docker İstemcisinin isteklerini dinler ve kapsayıcılar ve görüntüler, birimler ve ağlar gibi nesneleri yönetir.
- Docker İstemcisi: kullanıcının Docker platformuyla nasıl etkileşime girdiğidir.
- Docker hub: herkese açık olan bir kayıt defteridir (kayıtlar görüntüleri depolar, aşağıya bakın), yani herhangi bir Docker kullanıcısı buna erişebilir ve orada görüntüleri arayabilir. Docker, varsayılan olarak Docker Hub'daki görüntüleri arar, ancak özel bir kayıt defteri ayarlayabilir ve kullanabilirsiniz.
- Docker görüntüleri: kapsayıcı oluşturmak için şablonlardır. Kapsayıcı görüntüleri, bazı özelleştirmelerle diğer kapsayıcı görüntülerini temel alabilir. Diğer kullanıcılar tarafından oluşturulan ve genel kayıtlarda bulunan görüntüleri kullanmak dışında, görüntülerinizi oluşturabilir ve bunları özel kayıt defterinizde saklayabilir veya herkese açık bir kayıtta paylaşabilirsiniz.
- Docker kapsayıcıları: kapsayıcı görüntülerinin çalıştırılabilir örnekleridir. Çalışan her kapsayıcı diğerlerinden iyi bir şekilde yalıtılmıştır, ancak uygulamanızı oluşturmak için bunları bir araya getirebilirsiniz. Kapsayıcılar, izole çalışan yazılımlar veya aynı uygulamanın yapı taşları olarak görülebilir.
Artık her şeyin ne olduğunu ve ne yaptığını bildiğinize göre, Docker Mimarisini daha iyi anlayabilirsiniz: Docker Container s'yi oluşturmak ve çalıştırmakla ilgilenen Docker Daemon ile "konuşan" Docker İstemcimiz var. Özellikle Docker İstemcisi, bir ağ arabirimi veya UNIX yuvaları üzerinden bir REST API kullanarak Docker Daemon ile iletişim kurar. Bir Docker İstemcisi, birden fazla Docker Daemon ile iletişim kurabilir.
Neden bir Docker konteynerine ihtiyacımız var?
Docker Containers ve dağıtımlarının temelini oluşturan ilke, konteynerleştirmedir. Önemini ve avantajlarını anlamak için, konteynerleştirme olmadan gelişen bir senaryoyu tanımlamak faydalı olabilir.
Konteynerleştirmeden Önce
Geliştiriciler, uygulamalar üzerinde her zaman izole ortamlarda çalışmak istediler, böylece birbirlerine müdahale etmeyecekler. Konteynerleştirmeden önce, uygulamaları ve bağımlılıklarını izole etmenin tek yolu, her birini ayrı bir sanal makineye yerleştirmekti.
Bu sayede uygulamalar aynı donanım üzerinde çalışır; ayrılık sanaldır. Ancak sanallaştırmanın birçok sınırı vardır (özellikle de onu konteynerleştirmeyle karşılaştırdığımızda keşfetmek üzereyiz). Her şeyden önce, sanal makinelerin boyutu hantaldır. İkincisi, birden çok sanal makine çalıştırmak, her birinin performansını dengesiz hale getirir.
Güncellemeler, taşınabilirlik ve entegrasyonlar söz konusu olduğunda sanal makinelerin kullanımıyla ilgili başka sorunlar da vardır ve başlatma işlemi bazen çok zaman alabilir. Bu sorunlar, geliştiriciler topluluğunu yeni bir çözüm oluşturmaya itti. Ve yeni çözüm konteynerleştirmedir.
Konteynerleştirme
Konteynerleştirme de bir Sanallaştırma türüdür, ancak Sanallaştırmayı işletim sistemi düzeyine getirir. Bu, sanal makinelerin kullanımıyla Sanallaştırma sanal donanım oluştururken, kapsayıcılaştırmanın sanal bir işletim sistemi oluşturduğu anlamına gelir.
Sanal makinelerin aksine kapsayıcılar daha verimlidir çünkü:
- Bir ana işletim sistemi kullanırlar ve bu nedenle konuk işletim sistemi yoktur;
- Gerektiğinde ilgili kitaplıkları ve kaynakları paylaşırlar, bu da yürütmeyi çok hızlı hale getirir.
- Tüm kapsayıcılar aynı ana bilgisayar işletim sistemini paylaştığı için, başlatma işlemi de son derece hızlıdır (birkaç saniye gerektirebilir!).
Başka bir deyişle, konteynerleştirme ile şuna benzeyen gelişen bir ortam yapısına sahibiz:
- tabanda paylaşılan bir ana bilgisayar işletim sistemi
- bir konteyner motoru
- Yalnızca uygulamalarının belirli kitaplıklarını ve bağımlılıklarını içeren ve birbirinden tamamen yalıtılmış kapsayıcılardır.
Sanal makinelerde yapı aşağıdaki gibi olacaktır:
- bir ana işletim sistemi çekirdeği;
- uygulamaların her biri için (ayrı) bir konuk işletim sistemi;
- kütüphaneleri ve bağımlılıkları ile farklı uygulamalar.
Bahsettiğimiz gibi, iki sistem arasındaki en büyük fark, tüm farkı yaratan Containerization modelinde misafir işletim sisteminin olmamasıdır.
Docker faydaları
Docker Container, tanımladığımız gibi konteynerleştirmeden yararlanmanıza izin veren bir platformdur. Geliştiriciler için sahip olduğu tüm faydaları bir araya getirmemiz gerekseydi, bunlar aşağıdakiler olurdu.
Yalıtılmış Ortam ve Çoklu kapsayıcı
Docker, yalnızca birbirinden izole edilmiş ve birbirini rahatsız etmeden çalışabilen kaplar oluşturup kurmanıza değil, aynı anda ve aynı ana bilgisayar üzerinde birden fazla kapsayıcı kurmanıza da olanak tanır. Birden çok kapsayıcının her birinin yalnızca atanan kaynaklara erişmesine izin verilir. Ayrıca, artık ihtiyacınız olmayan bir uygulamayı ortadan kaldırma süreci de daha kolaydır: yalnızca kapsayıcısını ortadan kaldırmanız yeterlidir.
Dağıtım hızı
Olduğu gibi yapılandırılmış (önceki paragrafa bakın) Docker, uygulama dağıtım sürecini çok daha hızlı hale getirir (sanal makineleri kullanan alternatife kıyasla). Docker Kapsayıcılarının bu kadar iyi performans göstermesinin nedeni, Docker Kapsayıcılarının bir işletim sistemine önyükleme yapmaması için Docker'ın her işlem için farklı bir kapsayıcı oluşturmasıdır.
Esneklik ve Ölçeklenebilirlik
Docker Container, uygulamalarınızda değişiklik yapma sürecini çok daha kolay hale getirir. Çünkü bir uygulamaya müdahale etmeniz gerektiğinde, onun konteynerine basitçe erişebilirsiniz ve bu diğerlerini hiçbir şekilde etkilemeyecektir. Docker Compose komut aracı (aşağıdaki paragrafa bakın), diğer herhangi bir uygulama geliştirme yaklaşımıyla imkansız şekillerde esnekliği ve ölçeklenebilirliği artırır.
taşınabilirlik
Yazılım kapsayıcılarında oluşturulan uygulamalar son derece iyi taşınabilir. Docker Kapsayıcıları, ana bilgisayar işletim sistemi Docker'ı desteklediği sürece herhangi bir platformda çalışabilir. Uygulamanızı kapsayıcı içinde oluşturduğunuzda, Docker'ı destekleyen herhangi bir platforma taşıyabilirsiniz ve hepsinde benzer şekilde çalışacaktır.
Güvenlik
Docker Containers, güvenliği artırdı çünkü:
- Bir uygulama (ve olası sorunları) diğerlerini etkilemez.
- Geliştirici, trafik seyri üzerinde tam kontrole sahiptir.
- Çalışan her kapsayıcıya ayrı bir kaynak kümesi atanır.
- Bir uygulama, yetkilendirme olmadan başka bir uygulamanın verilerine erişemez.
Docker Oluşturma nedir?
Docker Compose, Docker ve Containerization'ın "gücünü" başka bir düzeye getiren bir Docker komutudur. Bu araçla uygulama geliştirme süreciniz çok daha hızlı ve kolay hale gelebilir. Docker Oluşturma aracı bir komut satırı aracıdır ve yaptığı şey birden çok kapsayıcıyı alıp bunları bir uygulamada bir araya getirmektir. Uygulama daha sonra tek bir ana bilgisayarda çalıştırılabilir.
Docker Compose ile karmaşık uygulama geliştirme projenizi daha küçük projelere bölme olanağına sahipsiniz. Farklı yönler üzerinde ayrı ayrı çalışabilir ve nihai web uygulamanızı veya başka bir uygulamanızı oluşturmak için nihayet bunları bir araya getirebilirsiniz.
Docker Compose kullanmak, bu proje için oluşturduğunuz kapsayıcıyı başka farklı projelerde de kullanabileceğiniz anlamına gelir. Aynı zamanda, tek bir yönü güncellemeniz gerektiğinde, tüm uygulama geliştirme projesini etkilemeden üzerinde çalışabileceğiniz anlamına gelir.
Docker Container Kullanma Adımları
Bu makaleyi okuyarak, Docker ile uygulama geliştirme dünyasına ilk adımlarınızı atmış oldunuz. Tüm yönleri hakkında bilginiz yoksa, bu kadar güçlü ancak karmaşık bir aracı kullanamazsınız. Şimdi, bilgisayarınıza Docker yükledikten sonra (Mac, Windows ve Linux için kullanılabilir), sonraki adımlarınız aşağıdaki gibidir.
- Konteynerler nasıl oluşturulur ve çalıştırılır
- Uygulamalar nasıl dağıtılır
- Docker Compose kullanarak bir uygulama nasıl çalıştırılır
Docker kullanmanın birçok avantajından biri, ayrıntılı belgelerin çevrimiçi olarak mevcut olması ve bunların Docker ekibi tarafından yeniden düzenlenmesi ve yayınlanmasıdır (bu nedenle çok güvenilirdir). Uygulama geliştirme yolculuğunuzun başında ve sırasında belgeleriyle tam olarak ilişki kurabilirsiniz. Ancak burada, şu iki adımla başlamanızı öneririz:
Öğreticiyi başlat
Docker'ın yeni kullanıcılar için yerleşik bir öğreticisi vardır. Başlatmak için bir komut istemi açın ve şu komutu yazın (kopyalayıp yapıştırabilirsiniz):
Docker run -d -p 80:80 liman işçisi/başlarken
Sadece bu komuta bakarak öğrenilebilecek birkaç şey var:
- "-" kabı arka planda çalıştırır;
- -p 80:80, ana bilgisayardaki 80 numaralı bağlantı noktasını kapsayıcıdaki 80 numaralı bağlantı noktasına eşler;
- docker/getting-started kullanılacak resmi belirtir.
Kontrol panelini anlayın
Eğitimi tamamladıktan hemen sonra ve Docker ekibi tarafından sağlanan belgeleri incelemeden önce, Docker Dashboard'u anlamanız önemlidir. Konteyner loglarına ve yaşam döngülerine hızlı erişim sağlayan bir paneldir. Örneğin, kontrol panelinden kapsayıcıları taşımak veya silmek son derece kolaydır.
Docker Container: uygulama geliştirme bilgisi gerektiriyor mu?
Docker'ı, kapsayıcısını ve Docker Oluşturma aracını kullanmak, programlama dilleri, çerçeveler ve mimari hakkında biraz bilgi gerektirir. Docker, süreci daha kolay hale getirebilir, ancak yalnızca uygulamaları programlamaya ve dağıtmaya zaten aşina olanlar için. Yeni başlayanlar, geliştirme vatandaşları veya uygulamaları dağıtmanın mümkün olan en basit yolunu arayan herkes için geçerli bir alternatif var: kodsuz yazılım geliştirme ve AppMaster.
AppMaster aslında, no-code manuel olarak yazmadan bir web uygulaması, mobil uygulama ve arka uç oluşturmanıza olanak tanıyan, dünyanın önde gelen kodsuz bir platformudur. AppMaster, projeniz için yapı taşlarının yanı sıra bunları bir drag-and-drop sistemiyle birleştirebileceğiniz görsel bir arayüz sağlar. Yazılımınızı bu şekilde oluştururken, AppMaster sizin için kaynak kodunu otomatik olarak oluşturacaktır. Kaynak koduna her an erişilebilir ve ayrıca dışa aktarılabilir.
AppMaster yazılım yapı taşları bir şekilde Docker görüntülerine benzeyebilir, ancak size kaynak kodu yazmadan bir araya getirilebilmeleri gibi değerli bir avantaj sağlarlar. Başlangıç seviyesindeyseniz AppMaster sizin için daha uygun bir platform olabilir.
İlginç gerçek AppMaster ayrıca bir liman işçisi konteyneri kullanır. Varsayılan olarak, tüm istemci uygulamaları AppMaster tarafından yalıtılmış Docker Container s'de otomatik olarak barındırılır. Tipik olarak, bir istemci yayınla düğmesini tıkladığında, 30 saniyeden daha kısa bir sürede AppMaster kaynak kodu oluşturur, derler, test eder ve bir Docker Container paketler. Platform, bu Docker Container, platformda bulunan bir hub olan yerel AppMaster gönderir. Harbor tarafından kullanılan AppMaster açık kaynaklı bir çözümdür. Ve bundan sonra, AppMaster hedef sunucuya bir komut gönderir, böylece bu kapsayıcıyı alır ve başlatır.
Çözüm
Docker, geliştiricilerin elinde önemli bir araçtır. Gördüğümüz gibi, eski sanal makine yaklaşımının sahip olduğu sınırların çoğunu çözüyor. Yine de, uzman geliştiriciler için uygun bir yöntemdir: sonuçta, şablonları ve görüntüleri kullanabilirsiniz, ancak Docker platformunda birçok şey yapmak için yine de kod yazmanız gerekir. Daha kolay bir alternatif arıyorsanız, no-code yazmaktan tamamen kurtulmak istiyorsanız, AppMaster ve kodsuz yaklaşım sizin için mükemmel çözümler.