Docker nedir ?

docker kurulumu
Docker hakkında bilgi docker nasıl çalışıyor.
docker.com

Bu yazımda sizlere docker hakkında bildiğim şeyleri paylaşacağım. Aslında docker hakkında o kadar çok yazı ve makale var ki bu yazımı teknik detaylarda boğularak değil işin biraz jargonunu anlamak için yazıyorum.

Container nedir ?

Eski yöntemde her servis için bir vm oluşturuluyor ve bu şekilde Cluster yapısı oluşturuluyordu. Şimdi bu yazıyı okuyan bazı kişiler şunu diyebilir “eskiden mi hala böyle” evet büyük çoğunluk sistemlerin hala böyle yani bir apache Web Server, mail sunucus vs. Olan bir yapıda vmware esxi gibi bir yapının üzerinde sanal işletim sistemleri kurulup her birine de bu servisler yüklenir. Ama bu yöntem aslında container teknolojisiyle kıyaslandığında hem çok masraflı hemde çok uğraş gerektirir. Bu yapıda her servis için bir işletim sistemi kuracaksınız ve o sistemler için belli bir kaynak ayıracaksınız. Şunuda yapabilirsiniz bir işletim sistemine birden çok servis de kurabilirsiniz fakat bu seferde servisler birbirlerini etkileyebilir. örn. bir servisiniz java 9 istiyorsa diğer servisiniz java 7 de stabil çalışıyorsa bunun için uğraşmanız gerekmektedir.

İşte container yapısı tam burda bize avantaj sağlıyor. Peki container yapısının ne avantajı var ? Container yapısında aslında siz bir işletim sistemi üzerinde o işletim sistemi çekirdeğini kullanan birbirinden tamamen izole şekilde servisler çalıştırabilirsiniz. Yani diyelim bir centos sunucunuz var. Siz bu sunucuda aynı anda bir apache Web Server ve mail sunucusu çalıştırırsınız bu iki servis birbirlerinden haberleri bile olmaz. Aslında temel olarak container teknolojisi budur. Aşağıdaki görselde aslında vm ile arasındaki fark çok güzel anlatılmış.

Vm teknolojisi ile Container teknoloji arasındaki fark

Image nedir ?

Image yapısı sizin kulllanacağınız servisin yada sizin yapmış olduğunuz projenin aslında bir nevi paket haline getirilmiş bir yapısı. Bu image ları containerlar üzerinde çalıştırarak servisinizi ayağa kaldırabiliyorsunuz.

Dockerfile nedir?

Dockerfile sizin image oluşturmanızı sağlayan bir dosyadır. Bu dosyanın adını “Dockerfile” olarak vermeniz gerekmektedir. Dockerfile dosyası sayesinde projenizi build edebilir ve image’ ını oluşturabilirsiniz.

FROM php:7.2-apache
COPY src/ /var/www/html/

Yukarıdaki örnekte basit anlamda bir Dockerfile dosyası içeriğini görüyorsunuz. Bu dosyada FROM olarak gösterilen kısım kullanılacak image ismi ve sürümünü, COPY kısmı ise src dizinini, oluşturulan container içindeki var/www/html/ yoluna kopyalanmasını sağlar.

Docker build

Dockerfile dosyamızı oluşturduktan sonra build işlemini yapmamız için aşağıdaki komutu kullanabiliriz. Aşağıda image tagında bir image oluşturduk.

docker build -t image . 

Docker run

Docker image imizi oluşturduktan sonra bu image mizi container da run etmemiz gerekir bunun için aşağıdaki komutu kulllanırız.

docker run -d -p 8080:80 --name containername image
  • --publish,-p Docker’dan ana bilgisayarın 8080 numaralı bağlantı noktasından gelen trafiği container ın bağlantı noktası 80’e yönlendirmesini ister. Containerların kendi özel bağlantı noktaları kümesi vardır, bu nedenle ağdan birine ulaşmak istiyorsanız, trafiği bu şekilde iletmeniz gerekir. Aksi takdirde, güvenlik duvarı kuralları varsayılan ağ duruşu olarak tüm ağ trafiğinin kapsayıcınıza ulaşmasını önler.
  • -d Docker’dan bu containerı arka planda çalıştırmasını ister.
  • --namebu durumda sonraki komutlarda kapsayıcınıza başvurabileceğiniz bir ad belirtir.

Sonuç

Sonuç olarak dockerın hem kullanımı çok pratik hemde maliyet olarak daha karlı diyebiliriz. Ben bu yazımda sizlere Docker hakkında ön bilgi sahibi olabilmeniz ve mantığını kavramanız için bu makaleyi yazdım. Docker hakkında çok daha teknik detaylara girmek isteyenler https://docs.docker.com/ adresini mutlaka inceleyin.

Şu ana kadar 1 yorum

Docker container ve image işlemleri – Bgul.net Yayın tarihi23:17 - 31 Temmuz 2020

[…] ile ilgili çalışma mantığı container ve image kavramlarının ne olduğunu burada açıklamıştım. Bu yazımda örnek bir nginx image’ ı üzerinden container yapısını […]

Bir Cevap Yazın