
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:
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 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.
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.docker volume ls
Bu komut, mevcut tüm volume'ları listeler.
docker volume inspect my_volume
Bu komut, belirtilen volume hakkında ayrıntılı bilgi sağlar.
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.
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.
Ö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
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.