Docker Serisi — Kurulum, Container Yaratma ve Çalıştırma

Ahmet Cokgungordu
3 min readJan 5, 2019

Bir önceki yazımda Docker’ın ne yaptığını basit bir şekilde görmüş olduk ve Docker hakkında bilgi sahibi olduk. Artık biraz daha detaya inmenin vakti geldi. Başlamak için öncelikle işletim sistemine Docker’ı kurmamız gereklidir.

Buradaki link üzerinden farklı işletim sistemleri için kurulumları gerçekleştirebilirsiniz.

Hem öğrenmek hem de alıştırma yapmak için Amazon EC2 kullanabilirsiniz. Eğer Amazon EC2 instance’larına sahipseniz buradaki yönergeleri takip ederek kurulum adımlarını tamamlayabilirsiniz.

CentOS makine için yükleme komutları aşağıdaki gibidir;

sudo yum install -y yum-utils device-mapper-persistent-data lvm2sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.reposudo yum install docker-cesudo usermod -aG docker $(whoami)sudo systemctl enable docker.servicesudo systemctl start docker.service---------------------- Docker Compose İçin -------------------------sudo yum install epel-releasesudo yum install -y python-pipsudo pip install docker-composesudo yum upgrade python*docker-compose version

Docker kurulu ise “docker version” komutu ile aşağıdaki gibi bir çıktı göreceksiniz.

Client: Docker Engine - Community
Version: 18.09.0
API version: 1.39
...
Server: Docker Engine - Community
Engine:
Version: 18.09.0
API version: 1.39 (minimum version 1.12)
...

Docker kurulduktan sonra “run” komutu yardımı ile kolayca bir Docker Container oluşturabilirsiniz. Herhangi bir komut hakkında daha detaylı bilgi öğrenmek isterseniz resmi Docker belgelerine ulaşabilir ve inceleyebilirsiniz. Yazının devamında açıklamalarla birlikte komutları elimden geldiğince anlatmaya çalışacağım.

Docker üzerinde basit bir hello-world uygulamasını ele alacak olursak. “run” komutu, öncelikle Image yüklü mü değil mi kontrolünü yapar. Eğer Image sistemde yoksa Docker üzerinden Image çekilir ve run edilir. Sistemde daha önce kullanılmış bir Image ise tekrar çekilmeye gerek kalmadan Docker tarafından çalıştırılır.

docker run hello-world

Yukarıdaki komut çalıştırıldığında ekrana “Hello from Docker!” yazısının basıldığını göreceksiniz. Bir Container çalıştırmak için gerekli olan tek şey budur.

Docker’ın işletim sisteminde sanal makineler olduğunu hatırlayın. Docker ayrı ve izole bir sanal makine oluşturur ve işletim sistemi ile Container arasında aracı olarak görev yapar.

Aşağıdaki Docker run komutunun tüm parametrelerini inceleyelim ve Docker’ın ne yaptığını anlamaya çalışalım.

docker run -d -p 49000:6379 --name my-redis redis

docker: Docker tetiklemek için gerekli parametre

run: Docker’a yeni bir Container çalıştırmak istediğimizi belirtiyoruz

-d: Container’ı Detached modda çalıştırmak için kullanılır. Terminali bloklamadan arka planda çalışmaya zorlar.

-p: Docker’a Container’dan işletim sistemi hostuna hangi bağlantı noktalarının mapleneceğini söyler. Formatı {işletim sistemi hostu portu:container portu} dur. Yukarıdaki örnekte Docker’a işletim sistemi hostunun 49000 numaralı portuna gelen istekleri Container’ın 6379 numaralı portuna yönlendirmesini belirtmiş olduk.

--n: Container’a isim vermek için kullanılır. Eğer bunu vermez isek Docker kendisi rastgele bir isim oluşturup Container’a o ismi verecektir.

redis: Bu son parametre ise başlatmak istediğiniz Image adını belirtir. Docker Hub üzerinde Image’lar {organizasyon adı}/{image adı}:{versiyon} olarak tutulurlar. Docker, versiyon belirtilmez ise en son versiyonu indirecektir. Docker Hub üzerinden Image’larınızı paylaşabilirsiniz veya diğer toplulukların Image’larını indirebilirsiniz. Yukarıdaki örnekte official bir Image olduğundan organizasyon adı belirtmedik. Fakat kendi yaptığınız veya diğer toplulukların hazırladığı Image’ları indiriyor olsaydık Image adından önce organizasyon adını belirtmemiz gerekirdi. Örneğin “cokgungordu/myubuntu” gibi.

Çektiğiniz veya çalıştırdığınız Container Image’larının makinenizde tutulduğunu unutmayın. Daha sonra hangi versiyonla veya hangi Container’ın çalıştığını kaybetmek kolaydır. Bu nedenle, kullanılmayan Container’ların arka planda çalışmasını önlemek için çalışması bittiğinde Container’ın durduğundan emin olun. Ayrıca bir Image’ı artık kullanmayacaksanız, makinenizden kaldırmanız size disk alanını açmanızı sağlayacaktır. Bir Image’ı çalıştırmayı tamamladığınızda, container’ı durdurmak için neler yapmamız gerektiğine bakalım.

docker ps: Çalışan Container’ları listelemek için kullanılır.

docker stop my-redis: Container’ı durdurmak için kullanılır.

docker rm my-redis: Container’ı silmek için kullanılır.

docker images: Yüklü Image’ları listelemek için kullanılır.

docker rmi my-redis: Image’ı silmek için kullanılır.

Yukarıda da bahsettiğim gibi birçok kuruluşun Docker Hub’da yayınlanan resmi Docker Image’ları bulunmaktadır. Docker Hub’da NodeJS’den Microsoft SqlServer’a birçok image bulabilirsiniz. Kendiniz de Docker Image’larınızı Docker Hub’a yükleyebilir ve kendinizin yüklediği veya başkaların yüklediği Image’ları kullanabilirsiniz. Bu konuyu detaylı olarak sonraki yazılarda ele alacağız.

Docker’da sık kullanabileceğiniz komutlar bu yazımda bulunmaktadır. Elimden geldiğince linkte verdiğim yazımı güncel tutmaya çalışacağım.

--

--