Docker’a Giriş

Emre Emanet
3 min readOct 10, 2022

--

Docker, sanallaştırma teknolojilerinden farklı olarak hypervisor’a gerek duymadan fiziksel sunucu üzerinde işletim sistemini sanallaştırmaya yarayan bir teknoloji bütünüdür.

Container’lar kendilerine ait processlerin, serviceslerin ve networklerin aynı işletim sistemi yada VM üzerinde çalışan izole edilmiş ortamlardır.

Docker CLI: Docker engine’i yönetmek için kullanılan komut satırından çalışan arabirimdir.

Docker Deamon: Container yaratıp çalıştırmaya çalışan ana uygulamadır.

Docker’ı Oluşturan Birleşenler

Docker CLI, REST API aracıyla Docker deamon’ına bağlanarak işlemleri gerçekleştirir.

Docker versiyonu hakkında bilgi almak için:

➜ ~ docker version

docker hakkında bilgi almak için:

➜ ~ docker info

Docker image silme

➜ ~ docker image rm -f hello-world
Untagged: hello-world:latest
Untagged: hello-world@sha256:7d246653d0511db2a6b2e0436cfd0e52ac8c066000264b3ce63331ac66dca625
Deleted: sha256:feb5d9fea6a5e9606aa995e879d862b825965ba48de054caab5ef356dc6b3412
  1. Her container imajında, o imajdan bir container yarattığımızda varsayılan olarak çalışması için ayarlanmış bir uygulama vardır.
  2. Bu uygulama çalıştığı sürece container ayakta kalır.
  3. Uygulama çalışmayı bıraktığında container kapatılır.
  4. Bir docker imajlarında birden fazla uygulama olabilir.

Docker container başlatıldığı zaman otomatik çalışması için tek bir uygulamanın ayarlanmasına izin verir fakat container içerisinde daha sonra bu uygulamanın yanında başka uygulamalarda çalıştırılabilir.

Docker imajında varsayılan olarak çalıştırılması için ayarlanan uygulama yerine çalışmasını istediğimiz diğer uygulamayı belirtebiliriz.

Docker Detached Mode

Container’ı run ederken arka planda çalışmasını istiyorsak:

--detach yada -d komutu ile çalıştırabiliriz.

➜ ~ docker run -d - name web1 - net alistirma-agi -p 80:8080 nginx:1.16

Docker Union File System

Docker imajının ilk katmanında bir linux dağıtımı bulunur. Bu dağıtım uygulamanın çalışması için gerekli olan altyapıyı oluşturur.

İkinci katmanda ise uygulama yer alır. Burada uygulamamız bir bash script olduğu için bağımlı olduğu herhangi bir şey yok.

Üçüncü katmanda docker run komutu girdiğimizde çalıştırılacak olan uygulamayı belirtilir.

Bu üç katmandan oluşan tek bir bütün gibi çalışmasını sağlayan docker objesine docker image diyoruz.

Docker bu image’ları normalde read-only sadece okunabilir yüklenir. Container çalıştırıldığında container yazılabilir katmanı oluşturularak container içerisindeki yaptığımız tüm değişiklikler bu katmanda tutulur.

Sistemde stop durumda olan tüm containerları silmek için docker container prune komutunu kullanıyoruz.

➜ ~ docker container prune
WARNING! This will remove all stopped containers.
Are you sure you want to continue? [y/N] y
Total reclaimed space: 0B

Docker Container Yaşam Süresi

  1. Container’lar tek bir uygulama çalıştırmak için oluşturulurlar.
  2. Containerlar bu tek uygulamanın çalışması için gerekli tüm gereksinimlerin önceden hazırlandığı image dediğimiz objelerden yaratılırlar. Containerlarla ilgili tüm bu gereksinimlerin image seviyesinde tamamlanmış olması beklenir.
  3. Bir container içinde ana uygulama durdurulduğu anda container da durdurulur. Container durduğu anda sistemin sorun olduğunu anlayarak aynı imagedan aynı ayarlarla yeni bir container oluşturarak sistemin çalışmaya devam etmesi sağlanabilir.
  4. Container içindeki uygulamada bir sıkıntı oluşursa veya herhangi bir yavaşlık varsa bu container içine bağlanılarak çözülmez. Container durdurulup yerine sıfırdan yeni bir container yaratılır. Eğer sıkıntı ayarlarla veya config ile ilgiliyse, sorun image yaratma aşamasında çözülür ve sorunun çözüldüğü yeni bir image ortaya çıkartılarak bundan yeni bir container yaratılır.

--

--

No responses yet