Container Teknolojilerine Giriş: Container Mimarisi
27.07.2021Caner Korkmaz
Bir önceki yazımızda container ve container imajının ne olduğunu açıklamaya çalışmıştık. Bu yazımızda işin biraz daha mimarisi hakkında bilgi vermeye çalışacağız
Bir önceki yazımızda container ve container imajının ne olduğunu açıklamaya çalışmıştık. Bu yazımızda işin biraz daha mimarisi hakkında bilgi vermeye çalışacağız.
Önce container ve container imajının ne olduğunu kısaca hatırlayalım. Container imajı, uygulamamızın tüm bağımlılıklarıyla birlikte (uygulama binary’lerimiz, runtime, uygulama kütüphaneleri, sistem kütüphaneleri vs.) paketlenmiş haliydi. Bunu herhangi bir programın çalıştırılabilir dosyasına (executable file) benzetebiliriz. Bir çalıştırılabilir dosyayı çalıştırdığımızda işletim sisteminde proseslerin ayağa kalkması gibi, bir container imajını çalıştırdığımızda da sistemimizde bir container ayağa kalkar. Zaten container dediğimiz şey de aslında bir grup proses ve sistem kaynağından ibarettir. Bu proses ve sistem kaynakları Linux namespaces, control groups, seccomp ve SELinux gibi Linux çekirdeğinin sahip olduğu özellikler kullanılarak sistemin geri kalanından izole edilirler ve böylece container dediğimiz birimi elde ederiz.
Containerlar direkt olarak işletim sistemi üzerinde çalışan prosesler oldukları için sanal makinelerde olduğu gibi bir hypervisor katmanına ihtiyaç duymazlar ve bu sayede sanal makinelere göre sistem kaynaklarını daha verimli kullanırlar.
Sunucumuzda bir container çalıştırabilmek için ilgili container imajını sunucumuza indirmemiz gerekmektedir. İşte container imajlarını saklamaya ve paylaşmaya yarayan servis ya da yazılıma “container registry” denir. Red Hat Quay, Ducker Hub, ve Google Container Registry buna örnek servisler olarak gösterilebilir. Container imajı bu registry’lerin birinden sunucumuza indirildikten sonra podman ve docker gibi araçlar yardımıyla çalıştırılarak container şeklinde ayağa kaldırılabilir.
Bu yazımızda temel container mimarisi ve terminolojisine bir giriş yapmaya çalıştık. Container teknolojileri, Kubernetes ve Red Hat OpenShift Container Platformu hakkında daha fazla bilgi için bizimle iletişime geçebilirsiniz.