Background
15 Nisan 2021 Perşembe
docker

Docker Volume Nedir ve Nasıl Kullanılır?

Docker volume, bir Docker container'ının veri kalıcılığı sağlaması için kullanılan bir depolama yöntemidir. Container'lar, varsayılan olarak yalnızca çalışma süresince veri tutar. Ancak, bir container silindiğinde bu veriler kaybolur. Bu duruma "stateless" çalışma denir. Docker volume sayesinde:

  • Veriler, container'ın yaşam döngüsünden bağımsız olarak korunur.
  • Birden fazla container arasında veri paylaşımı sağlanabilir.
  • Veri yönetimi ve yedekleme işlemleri kolaylaşır.

Docker Volume Nasıl Çalışır?

Docker volume, Docker Engine tarafından yönetilen bir dosya sisteminde saklanır. Bu, volume'lerin container'ın dışında tutulduğu anlamına gelir. Volume, container'ın içine bir dizin olarak bağlanır ve bu dizindeki değişiklikler, container kapatılsa veya silinse bile kalıcı olur.

Docker Volume Neden Kullanılır?

  1. Veri Kalıcılığı: Container silindiğinde veya yeniden başlatıldığında veriler korunur.
  2. Veri Paylaşımı: Birden fazla container aynı volume'u paylaşarak veri alışverişi yapabilir.
  3. Performans: Volume'lar, bind mount'lara kıyasla daha iyi performans sunar.
  4. Taşınabilirlik: Volume'lar yedeklenebilir ve başka bir Docker host'a taşınabilir.

Docker Volume Nasıl Kullanılır?

1. Volume Oluşturma

Docker volume oluşturmak, verilerinizi container'ların yaşam döngüsünden bağımsız hale getirir. Örneğin, aşağıdaki komutla bir volume oluşturabilirsiniz:

docker volume create my_volume

Bu komut, my_volume adında bir volume oluşturur ve Docker Engine tarafından yönetilir. Volume'lar, uygulama verilerinizi kalıcı hale getirmek ve farklı container'lar arasında paylaşmak için kullanılabilir.

2. Volume'u Bir Container'da Kullanma

Oluşturulan volume'u bir container'da kullanmak için iki yöntem bulunmaktadır.

-v Kullanımı:

docker run -d --name my_container -v my_volume:/app/data nginx
  • my_volume: Docker volume adı.
  • /app/data: Volume'un bağlanacağı container içindeki dizin.

3. Volume Yönetimi

Tüm Volume'ları Listeleme:

docker volume ls

Bu komut, mevcut tüm volume'ları listeler.

Volume Detaylarını Görüntüleme:

docker volume inspect my_volume

Bu komut, belirtilen volume hakkında ayrıntılı bilgi sağlar.

Volume Silme:

Bir volume'u silmek için aşağıdaki komut kullanılır:

docker volume rm my_volume

Not: Kullanımda olan bir volume'u silemezsiniz. Önce ilgili container'ı durdurmanız veya silmeniz gerekir.

Örnek Olarak;

MongoDB gibi bir veritabanı container'ı oluşturduğunuzu varsayalım. Varsayılan olarak, MongoDB container stateless çalışır. Bu, container yeniden başlatıldığında veya durdurulduğunda tüm verilerin kaybolduğu anlamına gelir. Ancak, volume kullanarak MongoDB'deki verileri kalıcı hale getirebilirsiniz.

1. Volume Oluşturma

Öncelikle bir volume oluşturmanız gerekir. Bu volume, MongoDB'nin verilerini kalıcı hale getirmek için kullanılacaktır:

docker volume create mongodb_data

2. Container Oluşturma ve Volume Kullanımı

Oluşturduğunuz volume'u MongoDB container'ına bağlayarak (-v mongodb_data:/data/db) verilerin kalıcı olmasını sağlayabilirsiniz:

docker run -d   --name mongodb_container   -e MONGO_INITDB_ROOT_USERNAME=admin   -e MONGO_INITDB_ROOT_PASSWORD=secret   -v mongodb_data:/data/db   mongo:latest

Docker volume kullanımı, container'larınızın verilerini güvenli ve kalıcı hale getirmenin en etkili yollarından biridir. Özellikle veri kaybının tolere edilemez olduğu projelerde, volume'lar hayati bir öneme sahiptir.

Yani kısacası, verilerinizin kalıcı olmasını ve container'lar arasında sorunsuz bir şekilde paylaşılmasını istiyorsanız, Docker volume'ları mutlaka kullanmalısınız.