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.
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
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
2. Konteyner İçine Girerek Dosya Düzenleme
Çalışan konteyner içine bağlanalım:
docker exec -it demoUygulama /bin/bash
Nginx HTML dizinine gidiyoruz:
cd /usr/share/nginx/html
Index dosyasını güncelleyelim:
echo "Merhaba Docker!" > index.html
3. Docker Volume Oluşturma
Yeni bir volume oluşturmak için:
docker volume create volumeExample
Tüm volume'leri listelemek için:
docker volume ls
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
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!