Docker Hakkında Bilgisi Olanlar

Bu konuyu okuyanlar

MrcBzk

Öğrenci
Katılım
16 Haziran 2019
Mesajlar
29
Reaksiyon puanı
3
Puanları
3
Hayırlı akşamlar, "Docker" hakkında bilgisi olan varsa örneklerle açıklayabilir mi?
 

Smoke On the Water

Profesör
Katılım
8 Temmuz 2017
Mesajlar
4,766
Reaksiyon puanı
3,910
Puanları
113
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.

vm-vs-docker-container


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üksekDaha düşük
Çalışır hale gelmesiDakikalarSaniyeler
VersiyonlamaYokYüksek
Kolay paylaşılabilirlikDüşükYüksek


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.
 

MrcBzk

Öğrenci
Katılım
16 Haziran 2019
Mesajlar
29
Reaksiyon puanı
3
Puanları
3
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.

vm-vs-docker-container


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
OSTam işletim sistemiKüçültülmüş işletim sistemi imajı
IzolasyonYüksekDaha düşük
Çalışır hale gelmesiDakikalarSaniyeler
VersiyonlamaYokYüksek
Kolay paylaşılabilirlikDüşükYüksek


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.
Teşekkürler, çok açıklayıcı olmuş.
 

Faruk Türkmen

Öğrenci
Katılım
1 Temmuz 2020
Mesajlar
1
Reaksiyon puanı
0
Puanları
1
Yaş
30
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
 
Üst