Arşiv

Posts Tagged ‘docker-volume’

235: vSphere Docker Volume v0.10

Konteyner yapılarının en verimli olduğu kullanım alanları, üzerlerinde veri tutmayan, kullanılıp atılabilen (disposable) uygulama parçalarını barındırdığı senaryolar. Ancak her konteyner bileşeni için bu durum elbette geçerli olamayacaktır, hatta çoğu senaryoda konteyner yaşam döngüsü ile verilerin yaşam döngüsü birbirinden bağımsız olması gerekecektir. Bu ihtiyacı gidermek amacı ile Docker, 1.8.0 versiyonu ile birlikte “volume plugin” mekanizmasını hayata geçirdi. Bu sayede, ilgili konteyner yok olsa bile verilerin devamlılığı sağlanabiliyor.

Volume plugin mekanizamasını hayata geçirirken, Docker kendi sürücüsünü varsayılan olarak entegre etti, ancak üçüncü parti firmaların da geliştirmeleri sonucunda kendi sürücülerini de sisteme dahil edebilmelerine de olanak sağladı (örnek: Flocker, ConvoyRex-Ray, vb). Eğer Docker’ın kendi standard sürücüsünü kullanmak istersek, aşağıdaki şekilde bir konteyner çalıştırabiliriz.

docker run –rm -it -v /kaynak_klasor:/hedef_klasor busybox

Bu komut sonrasında shell açılacaktır ve host üzerinde yer alan kaynak_klasor, konteyner içerisinde hedef_klasor olarak mount edilecektir. Shell’den çıktığımızda ise konteyner yok olacak ancak klasör üzerinde yapmış olduğumuz değişiklikler saklanacaktır. Bu etkili bir yöntem olmakla birlikte önemli bir dezavantajı vardır, üzerinde çalışılan hosta bağımlıdır, bu da konteynerlerin en önemli avantajı sayılabilecek taşınabilirlik özelliğini kaybetmesine sebep olacaktır.

docker-volume-vsphere0vSphere Docker Volume, vSphere üzerinde oluşturulan Docker konteynerler için persistent volume oluşturabilmek amacı ile ilerleyen açık kaynak bir projedir ve şu anda 0.10 versiyonundadır. vSphere üzerinde vSAN, VMFS ve NFS gibi tanımlı diskler üzerinde tanımlanabilir ve bu sayede erişilebilirlik ve yedeklilik unsurlarını beraberinde Docker ekosistemine taşıyabilir. Temel olarak yaptığı, docker komutları ile bir VMDK oluşmasını tetiklemek ve konteynerlerin bu VMDK’e erişimini sağlamak.

Sistemin çalışabilmesi için üç adet bileşene ihtiyacımız var.

  • vSphere Data Volume Driver: ESXi üzerine VIB paketi olarak kurulur.
  • vSphere Docker Volume Plugin: Docker Host üzerinde RPM paketi olarak kurulur.
  • Docker Host üzerinde vmtools servisinin kurulmuş olması gerekir.

docker-volume-vsphere1

Paketleri indirmek için, projenin GitHub üzerinde bulunan sürüm sayfasını kullanabiliriz. ESXi 6.0 ve PhotonOS kullanacağınız senaryoda indirmemiz gereken paketler aşağıdaki gibi olacaktır.

VIB paketinin kurulumu: İndirdiğimiz offline bundle paketini esxi sunucusunun erişebileceği bir yere kopyalar ve esxcli komutu ile kurabiliriz. Bu paket imzalanmamış olduğundan dolayı –no-sig-check parametresini kullanmamız gerekecektir. Restart gerektirmeyecektir ve servis otomatik başlayacaktır.

esxcli software vib install -d /tmp/vmware-esx-vmdkops-0.10.04f085b.zip –no-sig-check -f
/etc/init.d/vmdk-opsd status

RPM paketinin kurulması: PhotonOS senaryosunda vmtools kurulu geldiğinden sadece rpm paketinin kurulması yeterli olacaktır. Docker versiyon gereksinimi 1.9 ve ötesidir ancak PhotosOS ile birlikte 1.11 versiyonu geldiğinden dolayı sorun olmayacaktır.

rpm –install docker-volume-vsphere-0.10.04f085b-1.x86_64.rpm
systemctl status docker-volume-vsphere

Tüm hazırlıklar tamamlandıktan sonra docker komutları ile vmdk seviyesinde persistent disk yaratabilir durumdayız. İlgili komut dizilimi ve önemli olabileceğini düşündüğüm parametreler aşağıdaki gibidir. İsim ve sürücü haricindeki parametreler zorundu değildir.


docker volume create --name=YeniVolume --driver=<vmdk|photon> \
-o size=boyut<mb|gb|tb> \
-o diskformat=<zeroedthick|thin|eagerzeroedthick> \
-o vsan-policy-name=politika_ismi \
-o attach_as=<independent_persistent|persistent> \
-o access=<read-only|read-write> \
-o clone-from=BaskaVolume

Gereksinimleri tamamlayıp, temel yapısı üzerinde de durduktan sonra, artık PhotonOS bir sunucu üzerinde volume oluşturabiliriz. Aşağıdaki komut, VMFS01 isimli datastore üzerinde bir vmdk oluşturacaktır. ls ve inspect komutları ile de detaylarını görebiliriz.

docker volume create –driver=vmdk –name=vol1@VMFS01 -o size=1gb

docker-volume-vsphere2

Artık bu volume içerisine veri yazabiliriz. Aşağıdaki komut bir adet photon imajı açacak, vol1 isimli volume /klasor1 olarak mount edecek, hosts dosyasını kopyalayacak ve sonrasında oluşturulan konteyneri yok edecektir. Normal şartlarda imajın yazılabilir katmanına yazılan verinin silinmesini bekleriz ancak docker volume üzerine yazdığımız bu veri varlığını koruyacak ve yeni, sıfır bir konteyner oluşturduğumuzda veri erişilebilir olacaktır. Bir sonraki komutta ise yeni bir konteyner oluşturup, bu sefer /klasor2 olarak mount edeceğiz ve verinin erişilebilir olduğunu göreceğiz.

docker run –rm -v vol1:/klasor1 demoharbor.demo.local/library/photon:1.0 cp /etc/hosts /klasor1/deneme
docker run –rm -v vol1:/klasor2 demoharbor.demo.local/library/photon:1.0 cat /klasor2/deneme

docker-volume-vsphere3

vSphere tarafındaki görüntüsü ise, VMFS01 datastore’u içerisinde, vol1 isimli bir vmdk dosyası olacaktır.

docker-volume-vsphere4

Kategoriler:Docker, VMware Etiketler:
%d blogcu bunu beğendi: