docker compose

Centos 7 ‘de Docker ve Docker Compose Kurulumu ile Kullanımı

Docker Compose, multi-container uygulamalarınızı gereksinimleri ile birlikte tek bir dosyaya tanımlayarak akabinde tek bir komut ile reçetesini yazdığınız container ı ayağa kaldırmanızı sağlamaktadır.

Şimdi elimizde sıfır kurulu ve updateleri yapılmış bir centos 7 var , bir public ip verdim ( burada bolca var 🙂 ) , siz private ip de verebilirsiniz , sonuç olarak ssh erişimim de var ve makina bir şekilde internete çıkıyor, buraya kadar tamam ise konuya girebiliriz.

Bu arada docker compose eski fig in yerini aldı , fig duyar iseniz artık o deprecated oldu ve resmi olarak docker compose diye anılıyor.

Öncelikle Docker imajları hakkında bilgi verelim , Her bir docker container ı , bir docker imajının yerel bir kopyasıdır. Docker imajlarını bir linux işletim sistemi gibi düşünebilirsiniz ancak şöşnde sadece minimal gereksinimler bulunmaktadır ve bu imajlar ana host un kernel ini kullanırlar fakat çalışan bir container ın içine girerseniz sadece o container ın dosya sistemini görürsünüz.

En çok kullanılan imaj ları docker hub da bulabilirsiniz , Bunlar docker team tarafından kontrol edilir ve bazı imajların altında official ibaresini görür iseniz bu imajlara güvenebilirsiniz çünkü docker team bunları test etmiştir.

Şimdi docker kurarak başlayalım , bu iş için yine docker team ın hazırladığı bir shell script i çağırıp çalıştıracağız.

Centos 7 de wget öntanımlı gelmiyor , aşağıdaki komut ile indirebilirsiniz.

yum install wget

Şimdi scriptimizi çekiyor ve çalıştırıyoruz.

[root@ayhanarda-containers ~]# wget -qO- https://get.docker.com/ | sh

Yaklaşık 30 sn içinde kurulum tamamlandı , şimdi kurulup kurulmadığını aşağıdaki şekilde doğrulayabiliriz.

[root@ayhanarda-containers ~]# docker version
Client:
Version: 1.10.3
API version: 1.22
Go version: go1.5.3
Git commit: 20f81dd
Built: Thu Mar 10 15:39:25 2016
OS/Arch: linux/amd64

Eğer docker ı root olmayan bir kullanıcı ile kullanacak iseniz aşağıdaki komutla kendinizi docker grubuna dahil edebilirsiniz.

usermod -aG docker $(whoami)

Eğer root iseniz yukarıdaki komutu kullanmanıza gerek yok , şimdi docker ı başlatalım ve bundan sonraki rebootlar sonunda tekrar çalışacak hale getirelim , aşağıdaki 2 komutu kullanabilirsiniz.

[root@ayhanarda-containers ~]# systemctl enable docker.service
Created symlink from /etc/systemd/system/multi-user.target.wants/docker.service to /usr/lib/systemd/system/docker.service.
[root@ayhanarda-containers ~]# systemctl start docker.service

Artık docker çalışır durumda. Şimdi docker compose kurulumuna geçebiliriz.

Öncelikle python-pip kuruyorum çünkü docker compose u pip ile kuracağım.

[root@ayhanarda-containers ~]# yum install epel-release

[root@ayhanarda-containers ~]# yum install -y python-pip

Şimdi docker compose u kuruyoruz.

[root@ayhanarda-containers ~]# pip install docker-compose

Kurulum tamamlandı.Şimdi hemen docker compose ile bir container ayağa kaldıralım.

Şimdi yaml dosyamız için bir klasör açıp içine giriyorum.

[root@ayhanarda-containers ~]# mkdir hello-world
[root@ayhanarda-containers ~]# cd hello-world

docker-compose.yml isimli dosyamızı oluşturup içine reçetemizi yazacağız. Ben favori editör olarak nano kullanıyorum , Siz farklı bir editor kullanabilirsiniz.

[root@ayhanarda-containers hello-world]# nano docker-compose.yml

içine aşağıdaki satırları yazabilir ve kaydedebilirsiniz.

ayhanarda-test:
image: hello-world

Yani aşağıdaki gibi gözükmeli.

[root@ayhanarda-containers hello-world]# cat docker-compose.yml
ayhanarda-test:
image: hello-world

Şimdi yapmamız gereken tek bir hareket kaldı , bu prospektüsün yazılı olduğu containerı up etmek , hala hello-world klasörümüzün içinde iken aşağıdaki komutu kullanabilirsiniz.

[root@ayhanarda-containers hello-world]# docker-compose up
Pulling ayhanarda-test (hello-world:latest)…
latest: Pulling from library/hello-world
03f4658f8b78: Pull complete
a3ed95caeb02: Pull complete
Digest: sha256:8be990ef2aeb16dbcb9271ddfe2610fa6658d13f6dfb8bc72074cc1ca36966a7
Status: Downloaded newer image for hello-world:latest
Creating helloworld_ayhanarda-test_1
Attaching to helloworld_ayhanarda-test_1
ayhanarda-test_1 |
ayhanarda-test_1 | Hello from Docker.

..

Şimdi belirttiğimiz image ı indirdik , hadi bunu doğrulayalım.

[root@ayhanarda-containers hello-world]# docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
hello-world latest 690ed74de00f 5 months ago 960 B

Şimdi aynı yöntemle bir de nginx kuruyorum , bunu yazmayacağım , şimdi docker hub da offical nginx i bulup adını doğrulayıp aynı yöntem ile oluşturabilirsiniz. Docker ps ile çalıştığını görebilirsiniz.

[root@ayhanarda-containers ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e37b79df162b nginx “nginx -g ‘daemon off” About a minute ago Up About a minute 80/tcp, 443/tcp nginx_nginx_1

Yukarıda bir Container id göreceksiniz , her çalışan container ın bir id si vardır, yani eğer biz bu container ın dosya sistemine girmek ister isek aşağıdaki gibi o makinanın içine erişebiliriz , hatta nginx in conf dosyasında değişiklik yapabiliriz , işimiz bitince exit yazarak çıkabiliriz.

[root@ayhanarda-containers ~]# docker exec -it e37b79df162b /bin/bash
root@e37b79df162b:/# cd etc/nginx/conf.d/
root@e37b79df162b:/etc/nginx/conf.d# ls
default.conf

Farklı docker-compose ve multi-container örnekleri ile yakında görüşmek üzere..

Ayhan ARDA

Share Button

Yorumlar

Bir yanıt yazın

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

Bu site, istenmeyenleri azaltmak için Akismet kullanıyor. Yorum verilerinizin nasıl işlendiği hakkında daha fazla bilgi edinin.