Docker-Compose, Networks, Volumes

 Docker Kod Notları 2

docker-compose, network, volumes

Docker Compose: image' ler dan oluşturduğumuz container'ları, servisleri tanımını tek bir dosyada yaparak ayağa kaldırmamızı sağlar. Aynı zamanda bir ağ bağlantısı köprüsü oluşturarak birden fazla container aynı ağda konuşturup iletişim sağlaması ve bir çok farklı özellikler ile tek bir dosyada yönetmemizi sağlar.

docker compose komutları docker-compose.yml dosyalarında tutulur ve bu dosyanın bulunduğu klasörde komut satırına girilerek çalıştırılır.

yml dosya uzantısı özelliği kolay okunaklı olduğu ve anahtar değer şeklinde değerler yazıldığı için kullanımı oldukça kolaydır.

önemli docker-compose.yml dosyasında girdiğimiz değerler 2 boşluk ve alt değerlerde 2 boşluk altında girilmelidir, bu düzen dikkat edilmez ise söz dizimi hatası verecektir.

version    kullanacağımız docker versionu belirtilir
services   çalışıcak uygulamayı belirtilir.
ports       dış portan gelen isteği uygulamanın kullandığı iç porta yönlendirmek için belirtilir
volume    dosylarımız tutalacağı veya yerel pcden container aktaracağımız yolu belirtiriz. bunu belirtmez isek docker default olarak bir volume oluşturur ve orda tutar ,fakat container her yeniden başlatıldığında bu veriler silinir. bu yüzden docker 'ın dışında bir yol belirtmemiz önemlidir.
container_name    container 'ımız için bir etiket ismi oluşturuyoruz.

Dosya adı: docker-compose.yml
Dosya içeriği:

version: "3.1"

services:

  s_nginx:

    container_name: c_nginx

    image: nginx

    ports:

      - 8080:80

      - 8081:80

  s_html:

    container_name: c_html

    image: httpd

    volumes:

      -  C:\docker-containers\docker_compose\html/:/usr/local/apache2/htdocs

    ports:

      - 9090:80

      - 9091:80

volumes:

  html:


oluşturduğumuz yml dosyamızı çalıştırmak için, dosyamızın bulunduğu klasöre girip komut satırını açıyoruz ve aşağıdaki kodu çalıştırıyoruz.

>    docker-compose up -d

çalışan compose durdurmak için yml dosyamızın bulundugu klasordeki komut satırımıza aşağıdaki kodu çalıştırıyoruz.

> docker-compose down

docker compose loglarını görmek için aşağıdaki kodu çalıştırıyoruz.

> docker-compose logs

docker compose içerisinde bir servisi oluşturmak için aşağıdaki kodu çalıştırıyoruz.

>docker-compose build s_html



Docker Network:
Docker host üzerindeki docker container’lar gateway’e sahiptirler ve bu gateway üzerinden birbirilerine bağlantı kurabilirler. Her container’ımızın kendisine ait IP adresi ve bir port numarası vardır.
Docker container’ların birbirleriyle ve dışarıdaki uygulamalardan bu container’larla iletişim sağlanmasını sağlayan şey, Docker network yapısıdır.

3 adet network türü vardır:

Bridge: Aksi belirtilmediği sürece varsayılan network türüdür. Container yarattığımızda herhangi bir network belirtmezsek, default olarak bu network yapısını yani bridge network’u kullanır.

Host: Eğer container’lar host network’ü ile çalıştırılırsa, container’lar hosttaki ayarları kullanarak hayatına devam edecektir. İlgili container’a, Docker hostun kendi IP adresi üzerinden erişim sağlanır.

None: Container’ların hiçbir şekilde ağ altyapısını kullanmamasını sağlarlar. Bu network türüyle yaratılan container’a, ne dışarıdan ne de docker host içerisinden erişim sağlayabilirsiniz.

docker network yardımcı komutları:
>    docker network --help
connect :bir contenir o network bağlamak için
create  : yeni bir network oluşturmak için
disconnect : connect network bağlantısını koparmak için
inspect :  detaylarını görüntülemek için
ls : listeleme
prune : kullanım ıdısında olan aktif olarak kullanılmayan networkleri silmek için
rm : network kaldırmak için

örnek olarak komut satırında kullanıldığı gibi docker-compose.yml içerisinde de kullanabiliriz. :
>    docker network create custom_net --driver bridge
>    docker network inspect custom_net 

--network  hangi network de olması gerektiğini belirtiyoruz.

>    docker run -d -p 80:80 --name c_nginx --network custom_net nginx
>    docker network disconnect custom_net c_nginx

Docker Volumes

Docker üzerinde oluşan dataların saklanması ile ilgili bir bileşen docker container arasında veri saklamamız veya container arasında veri paylaşmamız için kullanılır, harici ortamda verilerin saklanması. 

docker volume yardımcı komutları:
>    docker volume --help
 create : yeni volume oluşturma  
 inspect : detaylarını görmek 
 ls : listeleme
 prune : kullanılmayan volume silmek
 rm : birvolume kaldırmak

örnek olarak komut satırında kullanıldığı gibi docker-compose.yml içerisinde de kullanabiliriz. :
docker volume prune
docker volume create v_test
docker volume inspect v_test

-v    kaydedeceğimiz yolu ve nereye kaydedeceğimizi belirtiyoruz.

>    docker run -d -p 80:80 --name c_nginx -v C:\app_data\nginx:/usr/share/nginx/html nginx

Related Posts

Docker-Compose, Networks, Volumes
4/ 5
Oleh