Docker Volume
Merhabalar,
Bu yazımızda docker volume ne olduğunu, özellikleri, avantajları ve komutlarını inceliycez.
Docker Volume
Container bilindiği üzere staless çalışır yani herhangi bir durum bilgisi tutmaz. Containerımızın silinse dahi içerisindeki dataları tutmak için volume kullanırız. Volumes, Docker Container’ları tarafından üretilen ve kullanılan verileri kalıcı kılmak için tercih edilen mekanizmadır. Dizin eşleme, ana makinenin dizin yapısına bağlıdır. Volumes ise tamamen Docker tarafından yönetilmektedir. Docker ile çalışırken veri tabanı kayıtları, üretilen log dosyaları, konfigürasyon dosyaları gibi bir çok yönetilmesi gereken işlemlerimiz olabilir. Her container ile çalışmamız bittikten sonra bu yapılan R/W işlemlerine ait verileri bir alanda tutmazsak tüm işlemleri, ayarları tekrardan yapmak durumunda kalırdık. Dolayısı ile her defasında kullanılması gereken ihtiyacımız olan verilerin bir şekilde bir alanda tutuluyor olması gerekmektedir. Burada Volume ve Mount kavramı karşımıza çıkıyor.
Docker Volume Özellikleri
- Container silinse dahi docker volume içerisindeki datalar silinmez.
- Docker volume içerisindeki datalar birden fazla container kullanabilir.
- Docker Image güncellemesi yapılsa bile volume içerisindeki datalar değişmez.
- Docker volume içerisindeki datalar taşınabilir ve yedeklenebilir.
Docker Volume Avantajları
- Yedekleme veya migrate yapmak kolaydır.
- Docker CLI komutlarını kullanarak docker volumes yönetilebilir.
- Hem Linux hem de Windows Container’larında çalışır.
- Containerlar arasında paylaşım yapılabilir.
- Volume içeriği container tarafından önceden doldurulabilir.
- Docker volumes container boyutu artırmaz.
Docker Volume Komutları
Docker volume komutu ile volume komutlarını listeleyebiliriz.
- -help yardımı ile komutların aldığı options ve kullanımı görebiliriz.
docker volume create ile yeni bir volume tanımlaması yapabiliriz.
docker volume create volume_ismi (kendi belirlediğiniz )
docker volume inspect ile oluşturulan volume detaylarına görürüz.
oluşturulan volume yeri mounpoint path bilgisi, oluşturulan volume ismi, oluşturulma tarihi görebiliriz.
docker volume inspect volume_ismi
Not : Mountpoint ubuntu 20.04 path bilgisi gösterilmiştir.
Not : Windows mountpoint path yeri, yani kalıcı volume yeri;
docker volume ls sistemimizdeki volumeleri listeleyebiliriz.
docker volume ls
docker volume prune ile tüm volumeleri silebiliriz.
docker volume prune
docker volume rm ile tek veya çoklu volumeleri silebiliriz.
tek volume silmek için kullanacağımız komut,
docker volume rm volume_name
Çoklu volume silmek için kullanacağımız komut,
docker volume rm volume_name volume_name
Docker Container ile Docker Volume Bağlama
Oluşturduğumuz container volume eşleme için ;
<volume_ismi(Host PC)> : <container_volume_path>
sadece oluşturulan dosyaların okunabilir(Read-Only) olması isteyebiliriz. Bunun için ;
<volume_name(Host PC)> : <container_volume_path>:ro
Basit bir örnekle containerımıza volume bağlama örneği yapalım.
Microsoft örneği :
docker volume ls komutu ile oluşturulan volume bakalım :;
Windows bilgisayarınızda c:program_data -> Docker -> volumes klasörüne baktığımızda
volume klasörümüz oluştuğunu görmekteyiz.
şimdide container’ımıza bağlanıp bir kaç klasör ve dosya oluşturalım bunun için ;
docker container exec -it container_name cmd
komutu çalıştıralım. Benim container ismi deniz_windows_volume dir.
Container bağlandıktan sonra deneme ve test adında klasör ve data.txt adında dosya oluşturalım.
Şimdi containerımızı silelim .
windows bilgisayarımızdan;
c-> program_data -> docker -> volumes -> depo_deniz -> _data
klasörünü baktığımızda datalarımızın silinmediğini görmekteyiz.
Bu yazımızın da sonuna gelmiş bulunmaktayız. Araştırmalarım ve sektörde karşılaştığım senaryolar üzerine yazılarımı yazmaya devam edeceğim. Umarım faydalı bir yazı olmuştur. Yazımı okuduğunuz için teşekkürler.
Referanslar :