2. Docker Nedir ?
SDÜ-CYBERLAB (Docker nedir?)
Klasik olarak bir tanımla başlamamız gerekirse Docker, dünyada en çok
kullanılan yazılım konteynerleştirme platformudur. Konteynerleştirme
konteyner içine koyma anlamına gelir.
Docker, diğer sanallaştırma çözümleri gibi tüm bir işletim sistemi ve
üzerindeki her şeyi hedef almak yerine sadece uygulamaları baş köşeye
oturtur ve onları tek başlarına çalışabilecekleri ve tamamen kendilerine ait
olan Konteyner'lerde çalıştırır.
Docker, Linux Kernel’e 2008 yılında eklenen Linux Containers (LXC)
üzerine kurulu bir teknolojidir
3. Docker nedir ?
SDÜ-CYBERLAB (Docker nedir))
Diğer sanallaştırma çözümleri asıl makinada bulunan "Host Operating
System" üzerinde çalışan "Guest" işletim sistemlerine ihtiyaç duyar.Bu
sanallaştırma araçlarında sistem şekildeki gibi çalışır.
4. Docker nedir ?
SDÜ-CYBERLAB (Docker nedir)
Docker ise aynı yalıtılmış ortamı direk olarak "Host" işletim sistemi
üzerinden sunar..Docker esas olarak linux kernelinde bulunan Linux
Container teknolojisine dayanır.Docker container teknolojisi şekilde ki gibi
çalışır.
5. Docker nedir ?
SDÜ-CYBERLAB (Docker nedir)
Docker ise aynı yalıtılmış ortamı direk olarak "Host" işletim sistemi
üzerinden sunar..Docker esas olarak linux kernelinde bulunan Linux
Container teknolojisine dayanır.Docker container teknolojisi şekilde ki gibi
çalışır.
6. Docker nedir ?
SDÜ-CYBERLAB (Docker nedir)
LXC nedir ?
lxc, açılımıyla linux containers, linux sistemlerde kullanabileceğiniz bir
başka virtualization uygulaması/method’udur.
En öne çıkan yanı tam sanallaştırma yerine, bir init process’inin etrafında
kurulu belirli process’lerin farklı bir kök dizini altında çalıştırılarak
sanallaştırmanın gerçekleştirilmesidir.
Bunun yanında lxc, kernel’in cgroups, namespace, bridging, virtual lan gibi
özelliklerden yararlandığı için chroot ile full-vm arasında bir noktada
denilebilir.
Full-vm’ler gibi resource management uygulanabilir, device’lar
paylaşılabilir. Full-vm’lere oranla kurmak, yönetmek, yürütmek oldukça
daha hızlı ve basittir.
7. Mimari
SDÜ-CYBERLAB (Docker nedir)
Docker temel iki parçadan oluşmaktadır
1- Linux Kernel’la direkt iletişim halinde olan Docker Daemon,
2- Docker Deamon ile iletişim kurmamıza olanak tanıyan Docker CLI
(Command-Line Interface)’dır.
Linux’ta hem Docker Daemon hem de Docker CLI doğal olarak direkt Linux
üzerinde koşmaktadır.
Windows ve Mac OS X’te ise Docker CLI Windows ve Mac OS X işletim
sistemleri üzerinde koşmakta, Docker Daemon ise bu işletim sistemlerinde
bir Hypervisor (duruma göre VMware, VirtualBox, Hyperkit, Hyper-V)
yardımıyla çalıştırılan Linux üzerinde koşmaktadır.
9. Container
SDÜ-CYBERLAB (Docker nedir)
Docker Daemon tarafından Linux çekirdeği içerisinde birbirinden izole
olarak çalıştırılan process’lerin her birine verilen isimdir.
Virtual Machine (Sanal Makina) analojisinde Docker’ı Hypervisor’e
benzetirsek fiziksel sunucu üzerinde halihazırda koşturulmakta olan her bir
işletim sisteminin (sanal sunucunun) Docker’daki karşılığı Container’dır.
Container’lar milisaniyeler içerisinde başlatılabilir, istenen herhangi bir anda
duraklatılabilir (Pause), tamamen durdurulabilir (Stop) ve yeniden
başlatılabilirler.
10. Image ve Dockerfile
SDÜ-CYBERLAB (Docker nedir)
Image Docker Daemon ile çalıştırılacak Container’ların baz alacağı işletim
sistemi belirtir.
Dosya sisteminin yapısı ve içerisindeki dosyaları, koşturacağı programı
belirleyen ve içeriği metin bazlı bir Dockerfile ile belirlenen binary’ye
verilen isimdir.
11. Docker CLI
SDÜ-CYBERLAB (Docker nedir)
Kullanıcının Docker Daemon ile konuşabilmesi için gerekli komut setini
sağlar.
Registry’den yeni bir Image indirilmesi, Image’dan yeni bir Container ayağa
kaldırılması, çalışan Container’ın durdurulması, yeniden başlatılması,
Container’lara işlemci ve RAM sınırlarının atanması vb komutların
kullanıcıdan alınarak Docker Daemon’e teslim edilmesinden sorumludur.
12. Docker Registry
SDÜ-CYBERLAB (Docker nedir)
DockerHub‘da topluluğun ürettiği Image’lar ücretsiz ve sınırsız indirilebilir,
oluşturulan yeni Image’lar gerek topluluk ile gerekse kişisel veya şirket
referansı için açık kaynaklı (ücretsiz) veya kapalı kaynaklı (ücretli)
yüklenebilir ve sonradan indirilebilir
Cloud’da hizmet veren DockerHub’ın yanında Image’larını kendi Private
Cloud’unda tutmak isteyenler için Docker’ın sunduğu Private Registery
hizmeti de vardır.
13. Docker Install
SDÜ-CYBERLAB (Docker nedir)
Docker linux komut satırında kurulum için sırası ile aşağıdaki komutları
uygulamak yeterli olur.
1. sudo apt-get update -y
2. sudo apt-get install apt-transport-https ca-certificates curl
software-properties-common
3. curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key
add -
4. sudo add-apt-repository "deb [arch=amd64]
https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
14. Docker Install
SDÜ-CYBERLAB (Docker nedir)
Kurulum aşaaması tamamlandıktan sonra “docker version” komutu
kullarak sisteme kurmak istediğimiz uygulamanın kurulup kurulmadığını
anlamamıza yardımcı olur.Komutun çıktısı şu şekilde olmalıdır.
15. Docker Clı
SDÜ-CYBERLAB (Docker nedir)
Docker’ı sistemimize kurduğumuza göre ilk olarak DockerHub’dan bir
kopyasını indirmek için docker pull hello-world komutunu verin.
Şöyle bir çıktı almamız gerekir.
16. Docker CLI
SDÜ-CYBERLAB (Docker nedir)
İlk docker imagemızı lokalimiz indirdikten sonra localimiz de indirilen bu
image görüntülemek için “docker images” komutunu çalıştımamız yeterli
olacaktır.
17. Docker CLI
SDÜ-CYBERLAB (Docker nedir)
Görüntülemiş olduğumuz hello-world imagemızı çalıştırmak için ise
“Docker run hello-world” komutunu çalıştırmak yeterlidir.
Bu komut image eğer daha önceden Pull edilmediyse öncelikle Image’ı Pull
etmekte ve sonra çalıştırmaktadır.
18. Docker CLI
SDÜ-CYBERLAB (Docker nedir)
Çalıştırılan docker run hello-world komutunu verdiğimizde Daemon
ilgili Image’dan yeni bir Container oluşturdu ve Container’ı çalıştırmaya
başladı. Container da yukarıda okuduğumuz çıktıyı oluşturdu ve bu çıktı
Daemon’dan Client’a gönderildi ve ekrana basıldı.
19. Docker CLI
SDÜ-CYBERLAB (Docker nedir)
Bu adımdan sonra çalıştırmış olduğumuz container’ler hakkında bilgi
edinmek istersek ilk olarak “docker ps “ komutunu ile karşılaşırız.
Bu komut docker clı da çalıştırmış odluğumuz ve halihazırda devam eden
containerlerin bilgilerini çıktı olarak verir.Burada gözükmemesinin sebebi
ise hello-world imagemızın sadece anlık olarak çalışıp kapanmasından
dolayı kaynaklanır.
20. Docker CLI
SDÜ-CYBERLAB (Docker nedir)
Peki docker deamonda önceden çalıştırmış olduğumuz bir image’ları nasıl
görüntüleyebiliriz.Burada “-a” parametresi yardımıza koşar eğer önceden
docker deamon da çalışmış olan image’ları listelemek isteresek
“Docker ps -a” komutunu çalıştırmak yeterli olacaktır.
21. Docker CLI
SDÜ-CYBERLAB (Docker nedir)
Bir önceki adımda çıkış yapan Container’ı tekrar başlatabiliriz. Bu işlemi
docker start komutu ile yapabiliriz.
-a parametresi kullanmazsak çalıştırılan container ile ilgili sadece id
bilgisini ekrana basar.Eğer kullanırsak çalışan container’ı terminale attach
ederek gerçekleşen outputları ekrana basar.
22. Docker CLI
SDÜ-CYBERLAB (Docker nedir)
Peki biz container’ı -a parametresi ile çalıştırdığımız zaman çalışmıyor mu
?
Tabiki de çalışıyor.Peki çalışan bu container ile ilgili oluşan hareketleri
nasıl görüntüleyebilriz.Burada ise “docker log <container_id> komutu ile
bu işlem sağlanır.
23. Docker CLI
SDÜ-CYBERLAB (Docker nedir)
Oluşturulan docker image’larımızı çok fazla oldu diyelim bu image’lar
arasında gereksiz olanlar olduğunu düşünelim bu image’ları localimizden
kaldırmak için “docker rmi <id>” komutu ile image’ı silebiliriz.Burada “-f”
parametresi kullanırsak container çalışır durumda bile olsa container’ı
kaldırır.
24. Docker CLI
SDÜ-CYBERLAB (Docker nedir)
Indirmiş olduğumuz bu docker image’ı çalışmaya başladı. Peki çalışan bu
nginx web serverı localimized görüntülemek için tarayıcımızda
“localhost:8080” adresini girmemiz yeterli olacaktır.
Burada “8080” yazmamızın sebebi -p paremetresinden dolayıdır.
“-p” parametresi container’ın internal 80 portunu external 8080 portuna
yönlendir anlamına gelir.
Bu demek oluyor ki externaldan 8080 portundan gelen istekleri container’
ın 80 portuna yönlendir anlamına gelir.
25. Docker CLI
SDÜ-CYBERLAB (Docker nedir)
Docker ps komutunu çalıştırdığımız zaman ise nginx web server’ın hale
çalıştığını görüntülüyoruz.
Bu çalışan image’ın terminal ekranına girmek için ise “docker exec -it <id>
/bin/bash” komutnu çalıştırmak yeterli olacaktır.Bu komut içerisin “-i”
parametresi interaktif terminali “-t” parametresi ise bu terminalin ekran
attach olmasını sağlar.