Hayırlı akşamlar, "Docker" hakkında bilgisi olan varsa örneklerle açıklayabilir mi?
Docker Hakkında Bilgisi Olanlar
Cevaplar
Docker, yazılım geliştiriciler ve sistemciler için geliştirilen açık kaynaklı bir sanallaştırma platformudur. Docker ile Linux, Windows ve MacOSX üzerinde Linux ve Windows sanal containerler (makineler) çalıştırabilirsiniz. Bu platform sayesinde web sistemlerinin kurulumunu, testini ve dağıtımını kolaylıkla gerçekleştirebilirsiniz. En önemli özelliği belki de "Benim bilgisayarımda çalışıyordu, sunucuda neden çalışmadı acaba?" sorununu ortadan kaldırıyor olması.
Docker’ın sanallaştırma yapısı, bilinen sanal makinelerden (VirtualBox, Vmware vb) farklı olarak bir Hypervisor katmanına sahip değildir. Bunun yerine Docker Engine üzerinden, konak işletim sistemine erişmekte ve sistem araçlarını paylaşımlı kullanmaktadır. Böylece klasik VM’lere göre daha az sistem kaynağı tüketmektedir.
Docker, LXC sanallaştırma mekanizması üzerine kurulu. Bir Docker imajı, container denilen birimlerde çalıştırılıyor. Her bir container bir süreç (process) kullanıyor. Bir makinada gücüne bağlı olarak binlerce docker containerı birden çalışabilir. Container imajları ortak olan sistem dosyalarını paylaşıyorlar. Dolayısıyla disk alanından tasarruf ediliyor. Şekilde görüldüğü gibi uygulama containerları ortak bin(exe) ve kütüphaneleri kullanıyorlar. Ancak klasik sanal makine sistemlerinde her bir uygulama için ayrı işletim sistemi ve kütüphane dosyaları ayrılmak zorunda.

Docker, yazılımların kurulu son hallerinin imajını alıp tekrar kullanılabilir olmasını sağlıyor. Bu imajları bir kere oluşturup diğer sunuculara gönderebilirsiniz ya da her sunucuda farklı imajlar oluşturabilirsiniz. Dockerfile adı verilen talimat dosyalarına bakarak her sunucu aynı imajı yeniden inşa edebilir. Bu sayede manuel bir müdahale gerekmez.
Bir diğer özellik ise Dockerfile ve imajların geliştirilebilir olması. Talimatlara birkaç adım daha eklemek isterseniz en baştan komutları vermek yerine kaldığı son yerden devam ediyor ve bu da zaman kazandırıyor.
Klasik VM vs Docker
VM’ler her bir çalışan örneği için full bir işletim sistemine sahiptir. Docker ise hem full işletim sistemi yerine boyut olarak küçültülmüş imajları kullanır hem de konak işletim sistemi kütüphanelerini paylaşımlı olarak kullanır. Fakat bu durum, Docker’i sistem kaynak tüketim dostu yaparken, izolasyon seviyesini ise düşürmektedir. Bunlarla birlikte aşağıdaki karşılaştırmaları yapabiliriz.
Her iki sanallaştırma yaklaşımın birbirlerine göre avantaj ve dezavantajları mevcut. Ancak, Docker yönünden bakıldığında bazı avantajların çok kritik olduğunu söylemek doğru olur.
Bunlarında başında kolay çalışması geliyor. Docker Hypervisor kullanmadığından, tam yüklü bir işletim sistemi kullanmadığından ve konak sisteme yakın çalıştığından saniyeler içinde çalışır. Bir diğeri ise versiyonlamaya yatkınlığı. Docker’ın en vurucu özelliklerinden biride versiyonlanabilme özelliği. Docker, kullandığı işletim sistemi imajlarının farklı hallerini kayıt altında tutmamıza olanak sağlar. Bu durum ise, hazırlanan imajların kullanıcılar arasında paylaşılmasına kapı aralamaktadır. Bir başka özelliğe daha değinecek olursak bu da paylaşılabilirlik. Kullanıcılar veya dağıtıcılar tarafından hazırlanan işletim sistemi imajları, merkezi sunuculara gönderilebilmekte ve aynı zamanda diğer kullanıcılar tarafından bu merkezi sunuculardan elde edilebilmektedir.
Containerların tek bir işletim sisteminde çalışması, akıllara güvenlik sorununu getirmektedir. Docker bu konuya yazılımsal çözümler getirmiştir. Container içerisinde çalışan uygulamalar başka bir container içerisindeki uygulamayı aksi belirtilmedikçe göremez ve etkileyemezler bir başka deyişle izoledirler.
Docker’ın sanallaştırma yapısı, bilinen sanal makinelerden (VirtualBox, Vmware vb) farklı olarak bir Hypervisor katmanına sahip değildir. Bunun yerine Docker Engine üzerinden, konak işletim sistemine erişmekte ve sistem araçlarını paylaşımlı kullanmaktadır. Böylece klasik VM’lere göre daha az sistem kaynağı tüketmektedir.
Docker, LXC sanallaştırma mekanizması üzerine kurulu. Bir Docker imajı, container denilen birimlerde çalıştırılıyor. Her bir container bir süreç (process) kullanıyor. Bir makinada gücüne bağlı olarak binlerce docker containerı birden çalışabilir. Container imajları ortak olan sistem dosyalarını paylaşıyorlar. Dolayısıyla disk alanından tasarruf ediliyor. Şekilde görüldüğü gibi uygulama containerları ortak bin(exe) ve kütüphaneleri kullanıyorlar. Ancak klasik sanal makine sistemlerinde her bir uygulama için ayrı işletim sistemi ve kütüphane dosyaları ayrılmak zorunda.

Docker, yazılımların kurulu son hallerinin imajını alıp tekrar kullanılabilir olmasını sağlıyor. Bu imajları bir kere oluşturup diğer sunuculara gönderebilirsiniz ya da her sunucuda farklı imajlar oluşturabilirsiniz. Dockerfile adı verilen talimat dosyalarına bakarak her sunucu aynı imajı yeniden inşa edebilir. Bu sayede manuel bir müdahale gerekmez.
Bir diğer özellik ise Dockerfile ve imajların geliştirilebilir olması. Talimatlara birkaç adım daha eklemek isterseniz en baştan komutları vermek yerine kaldığı son yerden devam ediyor ve bu da zaman kazandırıyor.
Klasik VM vs Docker
VM’ler her bir çalışan örneği için full bir işletim sistemine sahiptir. Docker ise hem full işletim sistemi yerine boyut olarak küçültülmüş imajları kullanır hem de konak işletim sistemi kütüphanelerini paylaşımlı olarak kullanır. Fakat bu durum, Docker’i sistem kaynak tüketim dostu yaparken, izolasyon seviyesini ise düşürmektedir. Bunlarla birlikte aşağıdaki karşılaştırmaları yapabiliriz.
| Kıyas türü | VM | Docker |
| OS | Tam işletim sistemi | Küçültülmüş işletim sistemi imajı |
| Izolasyon | Yüksek | Daha düşük |
| Çalışır hale gelmesi | Dakikalar | Saniyeler |
| Versiyonlama | Yok | Yüksek |
| Kolay paylaşılabilirlik | Düşük | Yüksek |
Bunlarında başında kolay çalışması geliyor. Docker Hypervisor kullanmadığından, tam yüklü bir işletim sistemi kullanmadığından ve konak sisteme yakın çalıştığından saniyeler içinde çalışır. Bir diğeri ise versiyonlamaya yatkınlığı. Docker’ın en vurucu özelliklerinden biride versiyonlanabilme özelliği. Docker, kullandığı işletim sistemi imajlarının farklı hallerini kayıt altında tutmamıza olanak sağlar. Bu durum ise, hazırlanan imajların kullanıcılar arasında paylaşılmasına kapı aralamaktadır. Bir başka özelliğe daha değinecek olursak bu da paylaşılabilirlik. Kullanıcılar veya dağıtıcılar tarafından hazırlanan işletim sistemi imajları, merkezi sunuculara gönderilebilmekte ve aynı zamanda diğer kullanıcılar tarafından bu merkezi sunuculardan elde edilebilmektedir.
Containerların tek bir işletim sisteminde çalışması, akıllara güvenlik sorununu getirmektedir. Docker bu konuya yazılımsal çözümler getirmiştir. Container içerisinde çalışan uygulamalar başka bir container içerisindeki uygulamayı aksi belirtilmedikçe göremez ve etkileyemezler bir başka deyişle izoledirler.
Teşekkürler, çok açıklayıcı olmuş.Docker, yazılım geliştiriciler ve sistemciler için geliştirilen açık kaynaklı bir sanallaştırma platformudur. Docker ile Linux, Windows ve MacOSX üzerinde Linux ve Windows sanal containerler (makineler) çalıştırabilirsiniz. Bu platform sayesinde web sistemlerinin kurulumunu, testini ve dağıtımını kolaylıkla gerçekleştirebilirsiniz. En önemli özelliği belki de "Benim bilgisayarımda çalışıyordu, sunucuda neden çalışmadı acaba?" sorununu ortadan kaldırıyor olması.
Docker’ın sanallaştırma yapısı, bilinen sanal makinelerden (VirtualBox, Vmware vb) farklı olarak bir Hypervisor katmanına sahip değildir. Bunun yerine Docker Engine üzerinden, konak işletim sistemine erişmekte ve sistem araçlarını paylaşımlı kullanmaktadır. Böylece klasik VM’lere göre daha az sistem kaynağı tüketmektedir.
Docker, LXC sanallaştırma mekanizması üzerine kurulu. Bir Docker imajı, container denilen birimlerde çalıştırılıyor. Her bir container bir süreç (process) kullanıyor. Bir makinada gücüne bağlı olarak binlerce docker containerı birden çalışabilir. Container imajları ortak olan sistem dosyalarını paylaşıyorlar. Dolayısıyla disk alanından tasarruf ediliyor. Şekilde görüldüğü gibi uygulama containerları ortak bin(exe) ve kütüphaneleri kullanıyorlar. Ancak klasik sanal makine sistemlerinde her bir uygulama için ayrı işletim sistemi ve kütüphane dosyaları ayrılmak zorunda.
Docker, yazılımların kurulu son hallerinin imajını alıp tekrar kullanılabilir olmasını sağlıyor. Bu imajları bir kere oluşturup diğer sunuculara gönderebilirsiniz ya da her sunucuda farklı imajlar oluşturabilirsiniz. Dockerfile adı verilen talimat dosyalarına bakarak her sunucu aynı imajı yeniden inşa edebilir. Bu sayede manuel bir müdahale gerekmez.
Bir diğer özellik ise Dockerfile ve imajların geliştirilebilir olması. Talimatlara birkaç adım daha eklemek isterseniz en baştan komutları vermek yerine kaldığı son yerden devam ediyor ve bu da zaman kazandırıyor.
Klasik VM vs Docker
VM’ler her bir çalışan örneği için full bir işletim sistemine sahiptir. Docker ise hem full işletim sistemi yerine boyut olarak küçültülmüş imajları kullanır hem de konak işletim sistemi kütüphanelerini paylaşımlı olarak kullanır. Fakat bu durum, Docker’i sistem kaynak tüketim dostu yaparken, izolasyon seviyesini ise düşürmektedir. Bunlarla birlikte aşağıdaki karşılaştırmaları yapabiliriz.Her iki sanallaştırma yaklaşımın birbirlerine göre avantaj ve dezavantajları mevcut. Ancak, Docker yönünden bakıldığında bazı avantajların çok kritik olduğunu söylemek doğru olur.
Kıyas türü VM Docker OS Tam işletim sistemi Küçültülmüş işletim sistemi imajı Izolasyon Yüksek Daha düşük Çalışır hale gelmesi Dakikalar Saniyeler Versiyonlama Yok Yüksek Kolay paylaşılabilirlik Düşük Yüksek
Bunlarında başında kolay çalışması geliyor. Docker Hypervisor kullanmadığından, tam yüklü bir işletim sistemi kullanmadığından ve konak sisteme yakın çalıştığından saniyeler içinde çalışır. Bir diğeri ise versiyonlamaya yatkınlığı. Docker’ın en vurucu özelliklerinden biride versiyonlanabilme özelliği. Docker, kullandığı işletim sistemi imajlarının farklı hallerini kayıt altında tutmamıza olanak sağlar. Bu durum ise, hazırlanan imajların kullanıcılar arasında paylaşılmasına kapı aralamaktadır. Bir başka özelliğe daha değinecek olursak bu da paylaşılabilirlik. Kullanıcılar veya dağıtıcılar tarafından hazırlanan işletim sistemi imajları, merkezi sunuculara gönderilebilmekte ve aynı zamanda diğer kullanıcılar tarafından bu merkezi sunuculardan elde edilebilmektedir.
Containerların tek bir işletim sisteminde çalışması, akıllara güvenlik sorununu getirmektedir. Docker bu konuya yazılımsal çözümler getirmiştir. Container içerisinde çalışan uygulamalar başka bir container içerisindeki uygulamayı aksi belirtilmedikçe göremez ve etkileyemezler bir başka deyişle izoledirler.
👍 1
Yazı bana ait değil, detaylıca yazacaktım fakat bilgi tazeleyim derken benim özetimden çok daha iyi anlatan bir makale görünce CTRL+C yaptım :)Teşekkürler, çok açıklayıcı olmuş.
👍 1
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. Docker Nedir? | BlueMark Academy
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. Docker Nedir? | BlueMark Academy