Derinlemesine yazılım eğitimleri için kanalımı takip edebilirsiniz...

Docker – Bind Mount İle Verilerin Kalıcılığını Sağlama

Merhaba,

Bir önceki Docker’da Üretilen Verilerin Kalıcılığını Sağlama başlıklı makalemde Docker’da containerlarda ayağa kaldırılan uygulamalarda üretilen verilerin kalıcılığının hangi metodoloji ve yaklaşımlarla sağlandığını teorik olarak incelemiştik. Bu içeriğimizde ise bu yaklaşımlardan Bind Mount yöntemini teknik olarak ele alacak ve irdeleyeceğiz.

Bind Mount Yöntemiyle Verilerin Kalıcılığı Nasıl Sağlanır?

Bu konuda esas izahati yukarıda adresi verilen makalede detaylarıyla yapmış olsakta, usul gereği burada da açıklama mahiyetinde bir kaç satır karalamak yerinde olacaktır. Bind Mount; container tarafında üretilen dataların ana makinedeki işletim sistemi üzerinde manuel olarak oluşturulan bir alanda depolanarak kalıcılığı sağlanmasıdır. Ana makine üzerinde bir depolama gerçekleştirdiği için tüm yönetim biz kullanıcılar tarafından manuel gerçekleştirilmekte ve Docker CLI tarafında herhangi bir müdahale söz konusu olmamaktadır.

Bind Mount Kullanımı

Bir container üzerindeki verilerin Bind Mount ile nasıl kalıcı hale getirildiğini pratik olarak inceleyelim. Bunun için ilk olarak yapmamız gereken bazı öncelikler vardır;

Başlarken

İlk olarak Docker tarafında fiziksel veri üretebilecek bir Asp.NET Core MVC projesi ayağa kaldırılması gerekmektedir. Bunun için hususi bir uygulama geliştirip içeriğimizin seyrine hazır olabilir yahut tarafımca hali hazırda tasarlanmış resim ekleme ve listeleme uygulaması olan şuradaki hazır projeyi edinerek, kullanabilirsiniz.

Ayrıca Bind Mount yönteminde işletim sistemi üzerindeki belirtilen herhangi bir alanın kullanılabilmesi için Docker’a dosya erişim izni verilmesi gerekmektedir. Bunun için başlat menüsünden Docker simgesine tıklayarak “Settings” -> “Resources” -> “File Sharing” kombinasyonunu takip ediniz ve nihai olarak açılan pencerede Docker tarafından erişim izni verilmesi gereken sürücüleri seçiniz ve “Apply & Restart” butonuna tıklayınız.
Docker - Bind Mount İle Verilerin Kalıcılığını Sağlama

Bu öncüllerle eşliğinde artık Bind Mount yöntemini teknik olarak ele alabiliriz.

Bind Mount Kullanan Bir Containerın Ayağa Kaldırılması

Dockerfile dosyasının tasarlandığını ve imajının üretildiğini varsaydığımız uygulamamızın containerını ayağa kaldırılırken verilerin kalıcılığını sağlayabilmek için Bind Mount yöntemini benimsemesi için aşağıdaki gibi Docker CLI komutu yazılmalıdır.

Prototip Açıklama
docker run –rm -d -p <port_out>:<port_in> –name <container_name>
–mount type=bind,
source=”<source_path>”,
target=”<target_source_path>” <image_name>
–mount type=bind : Verileri kalıcı hale getirmek için kullandığımız yöntemin türünü belirtiyoruz.

source=”<source_path>” : Üretilen verilerin ana makinede depolanacağı dizini belirtiyoruz.

target=”<target_source_path>” : Depolanacak verilerin nerede olduğunu bildiren container içerisindeki dizinini belirtiyoruz.

ÖRNEK KOD
docker run --rm -d -p 1071:1453 --name cont1 --mount type=bind,source="C:\Users\Gençay\Desktop\BindMountSource",target="/app/wwwroot/images" appimage2:v2

Docker - Bind Mount İle Verilerin Kalıcılığını Sağlama
Yukarıdaki görsele bakarsanız eğer uygulama imajından Bind Mount türünden aynı depoyu kullanacak şekilde biri 1071 bir diğer ise 1072 portlarını kullanan iki adet container ayağa kaldırılmıştır. Böylece dataların saklandığı yer merkezileştirilmiş olmaktadır.
Docker - Bind Mount İle Verilerin Kalıcılığını Sağlama
Görüldüğü üzere farklı portlarda ayağa kaldırılan containerlardaki uygulamalar verileri aynı alanda depoladıkları için birinde oluşan verisel etkileşim diğerlerinide etkilemektedirler.

İşletim sisteminde verileri depoladığımız source path’e göz atarsak eğer;
Docker - Bind Mount İle Verilerin Kalıcılığını Sağlama
üretilen verileri görmekteyiz. Tabi ki de containerlardaki veri etkileşimine göre bu dizinde anlık olarak fiziksel silkülasyon olası olduğundan dolayı boyut ve içerik olarak değişiklik gösterebilir.

Böylece uygulamamızı çalıştıran containerlar üzerinde yapılan faaliyetler neticesinde üretilen verilerimizi basit ve ilkel bir yöntem olan Bind Mount ile kalıcı hale getirmiş olduk.

Bind Mount, işlevsel olarak Docker platformunun ilk geliştirildiği tarihlerden beri var olan ve mevcudiyetini hala koruyabilen bir yöntem olmasının yanında, esasında basit olması bir avantaj gibi gözüksede source path içerisindeki önceden fiziksel var olan dosyaları kopyalamaması, Docker CLI kullanılamaması vs. gibi birçok handikap barındırdığı için verileri kalıcı hale getirme durumlarında pek tercih edilen bir yöntem değildir. Dolayısıyla bu handikapları aşmak ve daha çağdaş ve dinamik bir şekilde CLI yapılanmasıyla yönetilebilir bir yöntem uygulayabilmek için sonraki içeriğimizde ele alacağımız volume yapılanmasını kullanacağımızı şimdiden bellirtmek isterim…

O halde şimdilik görüşmek üzere…

İlgilenenlerin faydalanması dileğiyle…
İyi çalışmalar…

Bunlar da hoşunuza gidebilir...

3 Cevaplar

  1. FStackDev dedi ki:

    Hocam bu cümleyi biraz açar mısınız? Sourcepathe denemek için önceden dosya attım. İki uygulama da ayağa kalktığında bu dosyaları gördü. Sanırım ifadeyi ben yanlış anladım. Detay verebilirseniz sevinirim.

    “source path içerisindeki önceden fiziksel var olan dosyaları kopyalamaması”

    Sağlıklı günler…

  1. 03 Nisan 2020

    […] Docker – Bind Mount İle Verilerin Kalıcılığını Sağlama […]

Bir cevap yazın

E-posta hesabınız yayımlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir

*