Docker İmaj Kullanımı
0

Docker, container imajları container ekosisteminin temelini oluşturan bileşenlerden birisidir. Temel olarak container imaj tanımını, uygulama containerları oluşturmak için sadece okuma yapabildiğiniz dosyalar olarak düşünebilirsiniz.

Docker imajları containerlarımızı oluşturduğumuz Read Only dosyalardır. Bu dosyalar “layers” olarak tanımlanan katmanlı bir yapıdan oluşur. Pratikte bir container imajı tek bir dosyadan oluşmaz. Her katman aslında dockerfile’ da bir yönerge veya talimattır.

FROM ubuntu:17.10

COPY . /app

RUN make /app

CMD python /app/app.py

Örnek olarak yukarıda ki gibi olan bir dockerfile’ a sahip imaj dosyası, ubuntu 17.10 versiyonunu temel alan ve ardından bir takım dosya kopyalama ve bazı komutların çalıştırılmasını içeren katmanlar içermektedir. Her katman bir önceki katmandan bazı farklılıklar gösterir, bunları işletim sisteminde yaptığınız değişiklikler olarak düşünebilirsiniz.

Her imajın katmanlı bir yapıdan oluştuğunu imajı pull ederken de görebiliyoruz.

Resim-1

Bu katmanların bütünlükleri ayrı ayrı korunur. Yani her katmanın kendine özel bir hash (Content Hash) değeri vardır. En sonunda tüm katmanları hep beraber hashlenir ve buna Distribution hash denir. Bu hash indirdiğiniz imajın gerçektente ilgili yayımlayıcı tarafından olup olmadığınında doğrulamanın yoludur. İmaj güvenliği açısından bu önemli bi konu.

Imajın bütünlüğünü kontrol etmek için imaj indirdiğiniz de size iletilen hash’ ı indirdiğiniz yerde ki hash ile karşılaştırmalısınız.

Imajın mevcut imajınızın hash değerini görmek için “docker images –digests” komutunu çalıştırabilirsiniz.

Resim-2

İmajlarla ilgili tüm detaylı bilgileri ise “docker inspect microsoft/dotnet” komutu ile alabilirsiniz.

Resim-3


Resim-4


Resim-5

Bir imajın geçmiş bilgisini görmek için, imaj üzerinde hangi işlemler yapılmış ve hangi katmanlar oluşturulmuş “docker history” komutunu kullanabilirsiniz. Aşağıda gördüğünüz gibi Docker imajımıza öncelikle temel Windows Server imajı uygulanmış, güncellemeler kurulmuş, ve bazı komutlar çalıştırılmış.

Resim-6

Docker hub üzerinden bir imaj indirdiğimiz zaman docker varsayılan olarak “latest” taglı imajı indirir. Bu docker hub tarafından uygulanan otomatik bir yöntemdir. Tüm Container Registrylerde bu yöntem uygulanmaz.

Resim-7

Bu her zaman sizin isteğiniz senaryo olmayabilir. Bu yüzden ilgili imajın kendisini özel olarak belirtmelisiniz.

Resim-8


Resim-9

Yukarıda ki istenilen imaj tanımının gerçek görünümü aşağıda ki gibidir.

Yani bizim kullanımımızda aslında aldığımız imaj; docker.io/microsoft/dotnet:2.1.300-sdk

İndirdiğiniz imajı kullanarak yeni bir container oluşturduğunuzda, yukarıda bahsettiğimiz gib docker bu imaj üstüne yazılabilir bir katman daha ekler.

Resim-10

Eklenen bu yazılabilir katman Docker container’ının silinmesi ile beraber silinir.

Resim-11

Fakat container oluşturulmak için kullanılan imaj değişmeden kalır. Çünkü aslında bu imaj üzerinde herhangi bir işlem yapılmamıştır.

Bir docker imajında yazılan verilerin tutulmasını istiyorsanız, Docker container’larınıza volume’ler eklemelisiniz.

Bu konuyla ilgili sorularınızı  alt kısımda bulunan yorumlar alanını kullanarak sorabilirsiniz.

Referanslar

www.mshowto.org

TAGs: docker, containers, docker images, docker image security, docker işletim sistemleri, docker imaj güvenliği, docker storage drivers, docker hub, dockerfile

Bu İçeriğe Tepkin Ne Oldu?
  • 2
    harika_
    Harika!!
  • 0
    be_enmedim
    Beğenmedim
  • 0
    _ok_iyi
    Çok iyi
  • 0
    sevdim_
    Sevdim!
  • 0
    bilemedim_
    Bilemedim!
  • 0
    olmad_
    Olmadı!
  • 0
    k_zd_m_
    Kızdım!

Onur Yüksektepeli - Chief Technology Architect | Micosoft MVP Onur Yüksektepeli Nephocraft firmasının kurucusu aynı zamanda kendi firmasında teknoloji çözümleri mimarıdır. 15 Yıldan fazla IT tecrübesi ile temel uzmanlık alanı olan Platform ve diğer teknolojiler için müşterilerine ürün ve hizmetler sunmaktadır. Microsoft MVP ünvanına sahip Onur Yüksektepeli birçok IT etkinliğinde aktif konuşmacı olarak ve IT topluluklarında yönetici olarak aktif rol üstlenmektedir. Nephocraft firmasın da yönetici olarak oluşturduğu çözümlerde yeni teknoloji gelişmelerini de göz önünde bulundurarak, müşterilerine esnek, yenilikçi, akıllı ve üretken iş çözümleri üretmektedir.Onur Yüksektepeli bulut, platform, data, devops, development gibi konularda aktif danışmanlık ve IT eğitmenliğine de devam etmektedir.

Yazarın Profili

Bültenimize Katılın

Tıklayın, üyemiz olun ve yeni güncellemelerden haberdar olan ilk kişi siz olun.

E-posta adresiniz yayınlanmayacak. Gerekli alanlar * ile işaretlenmişlerdir