Docker Volume

Deniz TÜRKMEN
4 min readSep 7, 2022

--

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.

--

--

Deniz TÜRKMEN
Deniz TÜRKMEN

No responses yet