Data Vinci 17 : Docker

Tahmini Okuma Süresi: 8 dakika

Dockers olsa akla ayakkabı gelir. Docker‘da neyin nesi ki? Son zamanlarda adını duyuran bu “uber” teknoloji klasik sanallaştırma çözümlerine alternatif olarak açık kaynak kodlu olarak geliştirilmiştir. Dedimmmmm ve gömdüler beni. Camiada docker sanallaştırma alternatifi dediğiniz andan gömüldüğünüz ana kadar geçen süre “15 sn”. Akıllı olmak lazım.

 “Vmware öldü mü , ıssız acun kaldı mı?” sorularına “evet” diyebilmek için henüz erken. O zaman olay ne kardeşim? sorularına konteynırlaşma çözümü dediğiniz an ortam durulur.

Sanallaştırma çözümlerinin yazılımcılar için anlamı, fiziki ortamların yanına koyacakları, production ortamıyla aynı konfigürasyonlara sahip “test ortamları”. Ötesi devops kavramının  “ops” tarafında şimdi onlar düşünsün. Ancak altyapı çözümü olarak bakıldığında da sanal sunucular ile çalışmak maliyet azaltmak anlamına gelir. Maliyet azalıyorsa konu bir anda dikkat çekici hale gelir. Bir de image olarak hazırlanan kurulumların yapılması, zaman bakımından da avantajlara sahiptir.

Şimdi tüm entellektüel kişiliğimizi kenara koyalım ve cahilce yorumlamaya devam edelim.

Docker tarafında sanal makinenin karşılığı “hypervisor” oluyor. İşletim sisteminin karşılığı ise “docker” oluyor denebilir. Docker konfigürasyonların yapıldığı dosya ise “dockerfile“. Peki bu yapı bize ne vaad ediyor. Teknik detaylarını çok da iyi bilmeden sayıyorum. Hız, disk alanında azalma, daha kolay konfigürasyon, tutarlı ortamlar ve izolasyon… Bas eveti geç yani.

Docker teknolojisi ile haşır neşir oldukça Container, Image, Dockerfile, Docker Engine, CLI gibi terimleri duymak mümkün. Tek cümle ile bu kavramları açıklayalım.

Container: Sanal sunucular üzerinde çalışan her bir işletim sistemi.

Image: Düz mantık ve cahilce baktığımızda paketlenmiş işletim sistemi kopyası.

Dockerfile: Bu bir konfigürasyon dosyası, yapılacak konteynırlaştırma işlemi için gerekli ayarları tutan dosya.

Docker Engine: Bu engine araçları bana hep uyumsuzluğu gideren ara bir araç gibi gelmekte. İşletim sistemlerinin her birine Container diyor isek, Docker Engine içinde “gemicik” diyebiliriz.

CLI: Kara şimşek. “Dockerist” şahısların sistemi yapılandırma aşamasında kullandığı komut girmeye yarayan araç.

Kurulum

Docker, Windows, Mac, Linux ortamlarında çalışabilmektedir. Docker web sitesinden işletim sisteminize uygun kurulum talimatını izleyerek kurulum yapabilirsiniz. Ben Linux Ubuntu 64 bit versiyonu ile kurulum işlemlerini gerçekleştirdim. Docker CE kurulumu yapabilmek için 64-bit bir işletim sistemi versiyonuna sahip olmanız gerekmektedir. Ubuntu tarafında 3 versiyon var.

  • Yakkety 16.10
  • Xenial 16.04
  • Trusty 14.04

Yakkety versiyonunu indirmek için şu linki kullanabilirsiniz :

Yakkety 16.10

Linux versiyonunuzu öğrenmek için lsb_release -cs komutunu işletebilirsiniz.

OracleVirtualBox ile bu işletim sistemini sanal olarak yükleyebilirsiniz. En azından ben öyle yaptım.Zaten Linux ile çalışıyorsanız tatavaya gerek yok. Talk is cheap…

Docker anasayfasına gittiğinizde karşınıza iki çeşit docker sürümü seçiyor. Fakir ruhumuzu dinleyerek CE yani Community Edition seçiyoruz. Linux ortamlarında tozu dumana katarak ilerlemek için xterm‘i açıp dokümantasyon kısmında bizlere verilen :

 sudo apt-get -y install \ apt-transport-https \ ca-certificates \ curl 

komutunu çalıştırıp repository kurulum işine başlayalım dediğimizde hooop… güm. Fakir insan senin neyine Linux, Docker iç sesleri eşliğinde bir hata ile karşılaşıyorum.  Eksik paket var uyarısını dikkate alıp yapıştırdım müthiş sol ayağımla :

 apt-get -y install apt-transport-https 

fakat Linux bana Are you root ? diye sordu… Hep MS ile mi dalga geçeceğiz 🙂

he dedim, ben root 🙂

Neyse sudo mudo bir şeyler daha yazdıktan sonra yukarıda gördüğünüz gibi api-transport-https kurulumunu yaptım.

daha sonra curl komutu ile sertifika yükleme işlemini gerçekleştirdim.

Curl komutu
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add –

vay arkadaş her şey çok güzel gidiyor. derken…

yeni bir hata ile karşılaştım.  Ben nerde yanlış yaptım soruları içerisinde komuttaki hatayı bulmaya çalıştım. Root’sa root. Sudo ise sudo. Hani kolaydı lan çat çat kuruyorduk. Daha repository eklemek için bile 6 takla attım içsesi fularlı yapıma gölge düşürdü düşürecek iken. Bu adımı atlama kararı verdim. Fakir bedenime ağır geldi, sanırım burda işletim sisteminin stabilitesi ile ilgili işler yapılıyor. Fazla şaapmayalım.

Sonraki komut:

Update komutu
sudo apt-get update

Linux gibisi var mı yeaaaa? naraları ile mazotu fullemiş traktör misali yola devam ettim.

Geldik Docker CE  Bey’i yüklemeye.. Heralde Docker Bey diyceksiniz….

İnstall Docker
sudo apt-get -y install docker-ce

komutunu çalıştırdım.

Atom fiziğine de, profesörlüğüne de lanet olsun içsesi ile birlikte biraz araştırınca hani docker engine nerde? sorusu belirdi kafamda. Ama yılmadım içimdeki varoşa bastım kırbacı ve yola devam ettim.

Docker engine

linkinden indirdiğim Docker Engine‘ini kurdum.

Komut: 

İnstall Docker
sudo dpkg -i “indirilen dosya”

Son adım olarak ise :

Run Docker
sudo docker run hello-world

komutunu çalıştırdım. veeeee volaaaaa!

Hello from Docker! gördüğümüze göre kurulum tamamlandı. Hemen gidip LinkedIn profilime Docker ekliyeyim puaha:)

Linux ortamına pek aşina olmadığımdan ötürü kurulumu yaparken ben biraz uğraştım. Fakat çok sorun olmadı.  Son olarak ise :

Run Ubuntu Bash
sudo docker run -it ubuntu bash

komutunu çalıştırdım. Kısa bir download işlemi başladı. Muhtemelen benim lokale aldığım paketin içerisinde bash yer almadığı için bir takım dosyaların indirilmesi gerekti. İndirme işlemi tamamlanınca ise karşıma root geldi.

TL;DR

Geçtiğimiz sene katıldığım bir etkinlikte tanıştığım bu teknoloji, gelecekte adından daha sık söz ettireceğe benziyor. Şu an için “Emre Mor” kıvamında. Ama bu tarafta yaşanacak gelişmeler hiç de küçümsenecek ve gözden kaçırılacak gibi durmuyor.

Konu ile yazdıklarım olayın daha çok magazinsel boyutta irdelenmesi olduğu gözlerden kaçmamalı. İşi ciddiye alan arkadaşlar için Gökhan Şengün’ün yazmış olduğu seriyi okuyup özümsemesi gerekir.

Linkler:

Docker Bölüm 1: Nedir, Nasıl Çalışır, Nerede Kullanılır?

Docker Bölüm 2: Yeni bir Docker Image’ı Nasıl Hazırlanır?

Docker Bölüm 3: Docker Compose Hangi Amaçlarla ve Nasıl Kullanılır?

Diğer Faydalı Linkler:

Docker

Docker Repository

How is Docker different from a normal virtual machine?

Faydalı olması dileklerimle…

keep_calm

 

Bir Cevap Yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir