Docker İmajları ve Docker Hub

Merbaha arkadaşlar , bir önceki yazımızda Docker’ı indirip kurmuştuk ve de ilk container’ımızı çalıştırmıştık. Orada imajlardan ve izolasyondan bahsetmiştik. Bu izolasyon sayesinde Docker, sistemde hiçbir iz bırakmadan ve sistemi kötü yönde etkilemeden çalışabilmektedir. İstenirse, bu container’ların performansı da limitlenerek çok daha sıkı bir kontrol sağlanabilir. Buna da ileriki yazılarımızda değineceğiz.

Bu dersimizde ise Docker imajlarının yapısına, nasıl kullanıldığına ve Docker Hub’da onları nasıl bulabileceğinize değineceğiz. 

Docker İmaj

Docker container’ları, izole bir dosya sisteminde daha önceden ayarlanmış olan imajları kullanarak çalışmaktadır. Her container, belirli bir imajı baz alarak üstüne bir katman (layer) ekleyerek kendi sanal dosya sistemini oluşturur. Bu katmanlı yapı sayesinde container’lardaki değişiklikler baz imajları bozmaz, her değişiklik en üst katmanda kalır. Bir imajdan iki farklı container oluşturduğunuzda, ikisi de baz imajın üstüne kendi özel katmanlarını kullanır.

Bu katmanlı yapı Docker imajlarının kendisinde de bulunmaktadır. İlk katman işletim sistemi, ikinci katman ise gerekli yazılımların kurulduğu bir katman olabilir. Örneğin; Ubuntu işletim sistemi katmanından alınan bir imajın üstüne Java kurabilirsiniz. Daha sonra ise bu imajı kullanarak kendi Java uygulamalarınızı her seferinde tekrar Java kurmaya gerek kalmadan ya yeni bir imaj ya da yeni bir container olarak kullanabilirsiniz. Bu katmanlı yapı sayesinde de ortak kullanılan katmanlar ekstra yer kaplamaz, bu sayede disk kullanımında da kazanç sağlanabilir. Docker imajları ayrıca versiyonlu olabilir ve bu versiyonlar da birbirlerini etkilemeyen katmanlarda yer alır. Bu sayede Java 8 ve 9 u Docker’da aynı anda rahatlıkla kullanabilirsiniz. Aşağıdaki şekilde 3 katmanı ortak olan 2 farklı Docker imajına örnek bir yapı görülebilir. 

Docker Hub

Docker Hub ise Docker imajlarının paylaşılabileceği bir online servistir. Bu serviste Docker’ın kendisinin, ünlü şirketlerin ya da insanların oluşturduğu hazır Docker imajları bulunmaktadır. Örneğin; Linux dağıtımlarının imajları, ubuntu, centos, amazonlinux, debian, alpine gibi imajlar çeşitli versiyonlarıyla iyi bir başlangıç noktası sunmaktadır. Tercihinize göre bu imajları kullanıp paket yöneticileri ile istediğiniz programları yükleyebilir, kendi imajlarınızı oluşturabilirsiniz. İmaj oluşturmanın yollarına bir sonraki yazımızda detaylıca değineceğiz. 

Docker Hub’da, işletim sistemleri imajları dışında, hazır yazılımların kurulduğu imajlar da bulunmaktadır. Çeşitli programlama dillerinin imajları, sizin ihtiyaçlarınızı karşılayabilir. Örneğin; Docker Hub’da popüler olarak programlama dillerinin şu imajları bulunmaktadır: openjdk, golang, node, php. Örnek olarak, yazdığınız kodun çeşitli versiyonlarla derlenip denenmesi, izole bir ortamda derlenebilir olması gibi özelliklerini kullanabilirsiniz. 

Programlama dillerinin yanı sıra, veritabanı, uygulama sunucuları ya da paket yazılımların da Docker imajlarını çoğu zaman Docker Hub’da kolaylıkla bulabilirsiniz. Örneğin; mysql, postgres, wordpress, nginx gibi. Bu imajları kullan at veritabanları, test ortamı için temiz veritabanı, onlarca kullanıcıya sunacağınız izole WordPress ortamı için kullanabilirsiniz.

Peki, Docker Hub’da nasıl arama yaparsınız? Terminal/konsol uygulamanızda docker search kelime yazarak çeşitli sonuçlara ulaşabilirsiniz. Aynı sonuca Docker Hub’ın sitesinden de ulaşabilirsiniz. Peki bu sonuçların arasından neye göre seçmelisiniz? İnternetten her gördüğünüz siteye girmemeniz, onu doğrulayıp güvenilir olup olmadığını doğrulamanız gerektiği gibi Docker imajlarına da aynı şeyi yapmalısınız. Docker her ne kadar izole çalışsa da, bu sisteminize zarar veremeyeceği anlamına gelmez. Dosyalarınıza zarar vermese bile kaynaklarınızı çok fazla tüketebilir, sizi güvenli olmayan konfigürasyonlar yapmaya ikna etmeye çalışabilir. library/ diye başlayan ya da arasında / işareti bulunmadan yazan imajlar (ubuntu, wordpress gibi) Docker’ın kendisi tarafından hazırlanan imajlardır. Bunun dışında bir imaja ihtiyacınız olursa çıkan imajı Docker Hub sayfasına gitmenizi, orada varsa mutlaka Github linkine tıklayıp imajın kim tarafından yapıldığını incelemeniz kesinlikle faydalı olacaktır. Örneğin; Atlassian JIRA ve Confluence yazılımlarının Docker imajlarını kendi Docker Hub hesabında yayınladığından, imaj isimleri atlassian/jira-software formatındadır. 

Bir sonraki dersimize Kendi Docker imajımızı yazarak devam edeceğiz.

Tüm derslerimiz için tıklayınız.

10

Mustafa Akın

SRE Architect @Atlassian Opsgenie
PhD Öğrencisi @Bilkent Üniversitesi

Yorum Yaz

Haftalık Bülten

Mobilhanem'de yayınlanan dersleri haftalık mail almak ister misiniz?