Docker Volumes Nedir? Örneklerle Docker Volume Kullanımı

Docker Volumes, konteyner içinde oluşturulan verilerin kalıcı olarak saklanmasını sağlayan ve konteynerlar arasında veri paylaşımını kolaylaştıran önemli bir Docker bileşenidir.

Bir konteyner silindiğinde dosya sistemi de kaybolacağı için, verileri korumanın en güvenli yolu Docker Volume kullanmaktır.

Kısa Özet: Bu rehberde Docker Volume kavramını, Nginx örneği üzerinden nasıl oluşturulduğunu, konteynerlere nasıl bağlandığını ve Docker Compose ile nasıl kullanılacağını öğreneceksiniz.

Docker Volume Neden Kullanılır?

Docker konteynerleri varsayılan olarak ephemeral yapıdadır. Yani konteyner silindiğinde içindeki dosya sistemi de silinir. Bu nedenle kalıcı veri depolamak için volume kullanmak gerekir.

  • Konteyner silinse bile veriler korunur
  • Birden fazla konteyner arasında dosya paylaşımı sağlar
  • Yedekleme ve taşıma işlemleri kolaydır
  • Docker CLI ve API üzerinden kolay yönetilir
  • Hem Linux hem Windows ortamında çalışır
  • Veriler uzaktan depolanabilir
  • Konteyner boyutunu artırmaz

Nginx ile Docker Volume Örneği

docker pull nginx komutu
Nginx docker image indirme işlemi

1. Nginx İmajını İndirme ve Çalıştırma

Öncelikle Nginx docker imajını indirip bir konteyner çalıştıralım.

docker pull nginx

docker run -d \
--name demoUygulama \
-p 8000:80 \
nginx

Tarayıcıda aşağıdaki adrese giderek Nginx varsayılan sayfasını görebilirsiniz:

http://localhost:8000
nginx docker container çalıştırma
Nginx container çalıştıktan sonra görülen varsayılan sayfa

2. Konteyner İçine Girerek Dosya Düzenleme

Çalışan konteyner içine bağlanalım:

docker exec -it demoUygulama /bin/bash
docker exec container bash
Container içerisine bash ile giriş

Nginx HTML dizinine gidiyoruz:

cd /usr/share/nginx/html
nginx html klasörü
Nginx web root dizini

Index dosyasını güncelleyelim:

echo "Merhaba Docker!" > index.html
docker nginx index html değiştirme
Index dosyasının güncellenmesi

3. Docker Volume Oluşturma

Yeni bir volume oluşturmak için:

docker volume create volumeExample
docker volume create komutu
Docker volume oluşturma

Tüm volume'leri listelemek için:

docker volume ls
docker volume list
Mevcut docker volume listesi

Volume silmek için:

docker volume rm volumeExample

4. Volume Kullanarak Konteyner Oluşturma

Volume kullanarak yeni bir nginx container oluşturalım:

docker run -d \
--name demoUygulama2 \
--mount source=volumeExample,target=/usr/share/nginx/html \
-p 8000:80 \
nginx

Volume detaylarını incelemek için:

docker volume inspect volumeExample

5. -v Parametresi ile Volume Kullanımı

Volume bağlamanın bir diğer yöntemi -v parametresidir.

docker run -d \
--name demoUygulama1 \
-v volumeExample:/usr/share/nginx/html \
-p 8000:80 \
nginx

Konteyner silinse bile volume silinmez:

docker rm demoUygulama1
docker volume ls

Dockerfile ile Volume Tanımlama

Dockerfile içerisinde volume tanımlamak da mümkündür.

FROM openjdk

VOLUME ["/data"]

ENTRYPOINT ["/bin/sh"]

Bu yapı, konteynerdeki /data klasörünün otomatik olarak bir volume ile eşleştirilmesini sağlar.


Docker Compose ile Volume Kullanımı

version: '3'

services:

  webserver:
    image: nginx

    ports:
      - "8000:80"

    volumes:
      - .:/usr/share/nginx/html
docker compose volume örneği
Docker Compose ile volume bağlama

Buradaki . işareti mevcut dizini temsil eder.


Docker Volume Avantajları

  • Kalıcı veri depolama sağlar
  • Konteyner bağımsız çalışır
  • Veri paylaşımını kolaylaştırır
  • Yedekleme ve taşıma için uygundur
  • Performanslıdır
  • Konteyner boyutunu artırmaz

Sonuç

Docker Volumes, veri sürekliliği sağlamak ve konteynerler arasında dosya paylaşımı yapmak için kritik öneme sahip bir Docker bileşenidir.

Bu rehberde Nginx örneği üzerinden Docker volume oluşturma, bağlama ve Dockerfile ile Docker Compose içerisinde kullanma yöntemlerini adım adım inceledik.

Docker ve DevOps içerikleri için bizi takip etmeye devam edin. İyi çalışmalar!

Latest Software Developers - Yazılım Blog Yazarı Profil Resmi

Yazar

LatestSoftwareDevelopers

Blog where the most up-to-date software is followed. (En güncel yazılımların takip edildiği blog sitesi)

Devops ile ilgili yorumlar

Yorum Paylaş

EMail Zorunlu alanlar * *