Selamlar Arkadaşlar bu yazımda sizlere Docker içerisinde koşturduğumuz Containerler hakkında bilgiler vereceğim.
Peki Nedir Bu Container??
Uygulama dağıtım teknolojisi olan Container, uygulamalarımızı sanallaştırmamıza olanak sağlar. Genel olarak kullanılan VM’ler gibi Container’lar da uygulamalarımız için yalıtılmış ortamlar oluşturur ve cihazımızdaki işletim sisteminin alt yapısını kullanırlar.
VM’ler de OS kurulumları yapıldığından dolayı Hypervisor’leri kullanırlarken, Container’lar Docker’ın kurulu olduğu OS’in Kernel (Çekirdek)’inden yararlanırlar.
Sanallaştırma teknolojilerinde VM’lerde tam olarak OS yükü bulunurken, Container’larda uygulamamızın ihtiyacı olan Uygulamalar, Bağımlılıklar ve Kod blokları olduğundan dolayı yük çok daha azalmış olur. Yani bu demek oluyor ki OS’imizin Kernel’ini kullandıklarından dolayı OS yükü getirmezler.
Container’lar Docker, Kubernetes vb. gibi ortamlarda rahatlıkla çalıştırılabilmektedirler. Bu yüzden geliştiricilerin elinden çıkan işler Canlı sistemlerine taşınmadan önce rahatlıkla farklı Test ortamlarında da çalıştırılabilirler ve daha sonrasında yaygınlaştırılabilirler.
Containerlar Nasıl Çalışır?
Bir Container oluşturduğumuz zaman bunu bir Image kullanarak yaparız. Image’lardan oluşturulan Container varsayılan olarak belirlenmiş bir programı çalıştırırlar. Bu program çalıştığı sürece Container’ımızda ayakta ve çalışıyor olacaktır. Taki uygulamahata ile sonlandığında ya da kapatıldığında Container’de kapatılacaktır.
Docker Image’larını aslında şu şekilde de hayal edebiliriz. Bir Linux dağıtımı gibi ancak içerisinde Kernel barındırmayandır.
Docker Image’ları sadece bir uygulama içermez istediğimiz kadar uygulamayı koyabiliriz. Bu uygulamalara örnek vermek gerekirse mkdir, ls, rm ve shell diyebiliriz. Örnekler daha fazla çoğaltılabilir tabi. Ancak bu kadar uygulama içeriyor olmasına rağmen, Image’lar otomatik olarak çalışması için tek bir uygulamaya izin verirler. Otomatik olarak çalışan uygulamamız sürekli olarak koşacak ise, aynı container içerisinde farklı uygulamalarıda çalıştırmamıza olanak tanır. Taki bu uygulamaları kapatana ya da hata verip sonlanana kadar. Son olarak şunuda söylemem gerekiyor ki, Default uygulamamızı Container oluştururken değiştirebiliriz.
Bir kaç Docker Komutu ile başlayalım :
> docker version
Docker Container Platformunuz hakkında bilgiler vermektedir. Komutu çalıştırdığımızda Docker CLI aracılığıyla Docker Deamon arka planda çalışan Docker Servisi ile iletişime geçer ve çeşitli bilgileri bizim için geri döndürür.
Karşımıza getirdiği sonuçlardan bazılarını açıklamam gerekirse :
Server Client : Docker Deamon’ın sürüm numarasıdır.
Client Version : Docker CLI’nin sürüm numarasıdır.
Built : Docker yazılımının hangi tarihte derlendiğidir.
Git Commit : Docker yazılımının hangi Git Commit’inden türetildiğidir.
> docker info
Docker Daemon’ın çalıştığı sistem hakkında bilgiler vermektedir.
Containers : Çalışan ve Durdurulmuş containerların sayısını belirtir.
Images : Sistemde bulunan Image sayısını verir.
Server Version : Docker Deamon’un sürüm numarasıdır.
Kernel Version : OS’in Çekirdek sürümüdür.
Operaing System : OS türü ve sürümüdür.
CPUs, Total Memory, Name : İşletim sisteminin donanımlarının bilgileri ve adıdır.
Docker Root Dir : Docker’ın kurulu olduğu klasördür.
Gibi bilgileri bize göstermektedir.
> docker container --help
–help ya da -h ile yardım metinlerine ulaşabilirsiniz. Komutların genel kullanım bilgilerini, komut listesi ve seçeneklerini ve örnek komutlarını bulabilirsiniz.
Basit bir Container çalıştırma işlemi :
> docker container run hello-world
Komutu ile hello-world image’ını çalıştırmış olduk. Docker container yazarak container işlemi yapacağımızı belirttik. Run diyerek çalıştır dedik ve sonrasında hello-world olarak image adı girdik ve o image’ı çalıştırarak ekrana Hello from Docker! yazısını getirmiş olduk.
> docker container ls
> docker container ls -a
> docker ps
> docker ps -a
Komutları yardımıyla çalıştırılan ve ya sonlandırılmış container listesine ulaşabilirsiniz. Bu komutlarda bulunan -a ile tüm listeye ulaşabilirsiniz. Yani çalışan ve kapatılmış container listesine. CONTAINER ID’sinide bu kodlar yardımıyla bulabilirsiniz.
Şimdi ise docker Image kurulumu yaparak Container koşturalım :
> docker pull httpd
Pull komutu yardımı ile cihazımıza Image çekebiliriz.
> docker container run -d --name apache_server -p 80:80 httpd
Docker Container işlemleri yapacağımız için komut dizimize bu başlıkla başlıyoruz. Run ibaresi ile çalıştıracağımızı belirtiyoruz. -d ile arka planda (detached) çalışmasını söylüyoruz. –name ile container’ımıza isim veriyoruz. -p ile hangi portlardan çalışacağını belirtiyoruz. Httpd ise Apache Server için indirmiş olduğumuz Image’ın adıdır. Sonrasında ise docker container ls -a komutu ile çalıştırdığımız image’ın durumunu kontrol ediyoruz.
Daha sonra ben localhost olarak gittim, siz direk http://ip_adresiniz şeklinde yazmalı ve daha sonra it’s work yazısını göreceksiniz.
> docker container logs 82eac76f38eb
Komutu yardımıyla çalıştırılan containerlardan id’lerini girerek loglarına ulaşabilirsiniz.
> docker stop 82eac76f38eb
> docker start 82eac76f38eb
Komutları yardımıyla ise Container’ları durdurabilir ve çalıştırabilirsiniz.
Bu şekilde Docker serimize başlamış olduk millet bir sonraki yazılarımda görüşmek üzere. Herkese kolaylıklar dilerim. Bana destek olmak isterseniz Youtube’a SistemDostu yazarak kanalıma abone olabilirsiniz.