Docker – Return 0

Docker nedir?

Docker açık kaynak kodlu, ücretsiz bir paketleme servisidir. Linux tabanlı işletim sistemleri için yapılmıştır, zamanla Windows ve Mac makinelerde de bir sanal makine yardımıyla bu paketleri çalıştırabiliyoruz. Paketten kastımız aslında konteynır demektir. Diyelim ki uygulamanızı Linux bir makinede test etmek istiyorsunuz. Eğer bu teknolojiden haberdar değilseniz muhtemelen şu an bir Linux işletim sistemi iso dosyası indiriyorsunuz. Sonrasında bunu Oracle Virtual Box yardımıyla kuracaksınız. Tabi işlemcinizin sanallaştırma özelliğinin açık olması lazım ki sanal makine çalıştırabilesiniz. Daha önce sanal makine çalıştırmadıysanız muhtemelen bu özellik kapalıdır, bios ayarlarından açabilirsiniz. Bu işlemler size nereden baksanız 1 saate mâl olacak. Kurduğunuz Linux işletim sistemine yaklaşık 1-2GB ram ve 10-20GB disk alanı verdiniz vs. Hâlâ uğraşıyorsunuz. Oysaki Docker ile uygulamanızı çalıştırmak istediğiniz işletim sistemi çekirdeğini alıp çalıştırmak 5 dk bile sürmüyor. Ama önce Docker’i kendi bilgisayarımızda bir kuralım. Öncelik olarak Windows 10 veya RedHat 7 ya da CentOS 7 kullanmanız gerekiyor. Ubuntu’nun da muhtemelen son sürümünde çalışacaktır, ancak test etmedim. Windows 10 kullanıcıları için 2 seçenek mevcut. Eğer Windows 10 Pro kullanıcısı iseniz Hyper-V’yi aktifleştirin ve Docker for Windows’u indirip kurulum yapabilirsiniz. Eğer Windows 10 Pro kullanıcısı değilseniz Hyper-V seçeneğini aktifleştiremezsiniz. Bu sebepten de Docker, kendi linux çekirdeğini dolaylı bir yol ile size sağlar. Bunun için de Docker Toolbox indirmelisiniz. Yani Oracle Virtual Box üzerine kendi ihtiyacı olan küçük bir linux işletim sistemi kurar. Buna da boot2docker diyoruz. Bu 2 seçenek hakkında bilgi sahibi olun, Windows 10 Home kullanıcısı iseniz Hyper-V kurmaya veya Docker’i Hyper-V ile çalıştırmaya çalışmayın. Windows 10 Pro kullanıcılar ise dilerlerse Hyper-V’yi aktifleştirmeden Oracle Virtual Box ile sağlanan çözümü kullanabilir. RedHat7 ve CentOS7 üzerinde de kurulum yapmak oldukça basit. Docker’in sağladığı RPM dosyasını indirin ve kurulumunu gerçekleştirin. Eğer her şey yolunda gittiyse Windows kullanıcıları CMD açıp docker yazdıklarında kendilerine uzunca bir liste gelir. Aynı list RedHat ve CentOS7 kullanıcılarında da terminalde docker yazmaları durumunda gelecektir. Bu aşamaları geçtiğinizi kabul ediyorum. Geçemediyseniz buradan sorabilirsiniz veya internette araştırabilirsiniz. Aşağıdaki komutu çalıştıralım.

docker run centos

Bu komut size son sürüm centos işletim sistemi çekirdeğini çalıştırır.

docker run ubuntu

Bu komut da size son sürüm ubuntu işletim sistemi çekirdeğini çalıştırır. Tabi bu işletim sistemi çekirdekleri sizin makinenizde mevcut değildir ve internet üzerinden hub.docker.com’a giderek çalıştırmak istediğiniz imajı arar. Sizin makinenizde var olan imajlar ise sürekli indirilmez. Öncelikle makinede imajın var olup olmadığına bakar, yoksa hub.docker.com’a gider. İsterseniz hub.docker.com’a giderek paketleri araştırabilir, sonra gelip indirebilirsiniz. Arayüzde paketleri görmenin avatanjı şudur. Açıklamaları okuyabilirsiniz. Search dediğinizde bir satır açıklama verilir. Diyelim ki çalıştırmak istediğiniz bir imaj var mı yok mu öğrenmek istiyorsunuz. Öyleyse

docker search alpine

dediğinizde alpine adında bir imaj aranır. Alpine, çok küçük bir linux çekirdeğidir. Aradığınız paketler için 2 sütun vardır. Birisi doğrudan üreticinin koyduğu pakettir, official olarak geçer. Diğeri ise Docker hayranlarının oluşturduğu özelleştirilmiş paketlerdir. Mesela alpine linux imajını indirmek için

docker pull alpine

diyebilirsiniz. Diğer imajları da benzer şekilde çekerek çalıştırabilirsiniz. Ekranda bir baktınız İngilizce indirildi yazıyor. Peki ben bu indirdiğim imajları nasıl göreceğim? Bunun için de

docker images

demeniz yeterlidir. Size, makinenizde bulunan imajları listeleyecektir. Mesela bir Centos işletim sistemi çekirdeği indirelim.

docker pull centos:latest

dedim. Bu durumda Centos’un son sürümünü indirecektir.

docker run centos

dediğinizde çalışıp kendisini kapatacaktır. Çünkü önde mi yoksa arka planda mı çalışsın bilmiyor. Bir şey söylemedik. Şimdilik arka planda çalıştıralım.

docker run -dt centos

-d demek detached demektir. Yani arkada çalışması için gereklidir. -t ise terminal olduğunu belirtir. Eğer siz arkada terminali çalıştırmazsanız konteynır çalışır hâlde durmaz. Bu da bizim istediğimiz şey değildir. Bizim isteğimiz arkada uygulamamızın sürekli çalışması, bu yüzden de terminal şart.

docker run -it centos

derseniz -i interaktif demektir ve size o işletim sistemi çekirdeğini sanki oradaymış gibi kullanma şansı verir.

ps axf

yazdığınızda sadece /bin/bash ve ps axf görürsünüz. Şu hâlde konteynırdan

exit

diyerek çıkın.

docker ps

dediğinizde konteynır çalışıyor mu diye bakıyorsunuz ve çalışmıyor. Çalışsa orada görecektiniz.

docker ps -a

dediğinizde ise az önce konteynırdan çıktığınızı söylüyor. Şimdi diyeceksiniz ki -dt ile çalıştırınca arkada kalıyor, -it ile çalıştırınca da çıkamıyoruz gibi bir izlenim oluştu. Evet, öyle bir izlenim oluşuyor ama bunlar düşünülmüş.

docker run -it centos

ile interaktif terminal modunda başlattığınız işletim sisteminde

CTRL + P Q

ile çalışır hâlde bırakıp çıkabilirsiniz. CTRL’ye basılı tutarken P ve Q ya sırayla ya da beraber basın. Şimdi de konteynır arka planda çalışmaya başladı. Benzer durum -dt ile çalıştırınca da oluşuyordu.

docker ps

ile tekrar kullanmak istediğimiz konteynırın ID’sini öğreneceğiz. 15 karakterden filan oluşuyor ama hepsine ihtiyacınız yok ta ki diğer konteynırlarla ilk bir kaç harfi karışana kadar. Şunu demek istiyorum.

docker exec -it <konteynır id> bash

konteynır id nin ilk bir kaç karakterini bu komutta yerine yazarsanız interaktif bir bash çalıştırır. Hâliyle az önce terk ettiğiniz konteynıra tekrar erişim sağlamış oldunuz. Benzer şekilde yukarıdaki gibi tekrar çıkabilirsiniz. Diyelim ki konteynırın artık çalışmasına ihtiyacı yok. Bu sefer de

docker stop <konteynır id>

ile konteynırı sonlandırabilirsiniz. Şimdi diyeceksiniz ki paket, imaj, konteynır hepsi birbirine girdi. Paket kavramını ortaya ben attım. Çünkü paketleme işlemi yapılıyor. Ama imaj ve konteynır kavramı tamamen Docker’e ait. Sisteminizde mevcut hâlde bulunanlar imajdır. Eğer siz bu imajları belli başlı parametrelerle çalıştırırsanız çalışan bu imajlara konteynır diyoruz. Bu kavramlarla pratik yapın ve Docker size neler kazandırabilir düşünün. Devamı bir sonraki yazımızda.

Leave a Reply

Your email address will not be published. Required fields are marked *