Konteyner
- İngilizcesi
- Container
- Türkçe karşılığı
- kapsayıcı
- Okunuşu
- kınteynır
Günlük kullanımda iki ad da yaygın.
Kısaca
Konteyner, bir uygulamayı bağımlılıklarıyla paketleyip ana makinenin paylaşılan işletim sistemi çekirdeği üzerinde çalıştıran hafif, yalıtılmış bir pakettir.
Konteyner nedir?
Konteyner, bir uygulamanın kodunu çalışma zamanı, sistem kütüphaneleri ve ayarlar gibi çalışmak için ihtiyaç duyduğu her şeyle birlikte içeren standart bir yazılım birimidir. Paket kendi kendine yettiği için uygulama, konteyner nerede çalışırsa çalışsın (dizüstü bilgisayarda, sunucuda ya da bulutta) aynı şekilde davranır.
Konteynerler Linux çekirdeğinin özelliklerine dayanır: namespace'ler her konteynere süreçler, dosyalar ve ağ üzerinde kendine ait yalıtılmış bir görünüm verir; cgroups (kontrol grupları) ise ne kadar CPU ve bellek kullanabileceğini sınırlar. Her konteyner, katmanlar halinde oluşturulmuş salt okunur bir şablon olan imajdan başlar; containerd ya da CRI-O gibi bir konteyner çalışma zamanı da onu başlatıp durdurur.
Bir apartmandaki daireleri düşünün: her dairenin kilitli bir kapısı, odaları ve sayacı vardır, ama hepsi aynı temeli ve tesisatı paylaşır. Konteynerler de aynı şekilde birbirinden yalıtılmıştır ancak ana makinenin işletim sistemi çekirdeğini paylaşır; bu da onları hızlı başlatılır ve çok sayıda çalıştırıldığında verimli kılar.
En yaygın karışıklık konteynerlerle sanal makineler arasındadır. Sanal makine, bir hypervisor'ın üzerinde eksiksiz bir konuk işletim sistemi içerir; bu yüzden daha ağırdır ve daha geç açılır, ancak daha güçlü yalıtım sağlar. Konteynerler ana makinenin çekirdeğini paylaşır, bu yüzden boyutları çoğu zaman gigabayt yerine megabaytla ölçülür ve yaklaşık bir saniyede ya da daha kısa sürede başlar.
Bir bakışta
Önemli noktalar
- Konteyner, bir uygulamayı bağımlılıklarıyla paketler; böylece her yerde aynı davranır.
- Sanal makinelerin aksine konteynerler ana makinenin işletim sistemi çekirdeğini paylaşır.
- Linux namespace'leri yalıtımı sağlar, cgroups ise kaynakları sınırlar.
- Konteynerler OCI standardına uyan imajlardan oluşturulur.
- Docker konteynerleri oluşturur ve çalıştırır; Kubernetes onları büyük ölçekte yönetir.
Örnek
# Download the nginx image and start a container from it
docker run -d --name web -p 8080:80 nginx
# List running containers
docker ps
# Open a shell inside the running container
docker exec -it web sh
# Stop and remove the container (the image stays on disk)
docker stop web && docker rm webSık sorulan sorular
Konteyner ile sanal makine arasındaki fark nedir?
Sanal makine, sanallaştırılmış donanım üzerinde eksiksiz bir konuk işletim sistemi çalıştırır; konteyner ise ana makinenin çekirdeğini paylaşır ve yalnızca uygulamayı yalıtır. Konteynerler daha hafiftir ve daha hızlı başlar; sanal makineler daha güçlü yalıtım sunar.
Konteynerler Docker ile aynı şey midir?
Hayır. Konteynerler genel bir teknolojidir, Docker ise bunları oluşturmak ve çalıştırmak için kullanılan popüler bir araç takımıdır. Docker ile oluşturulan imajlar OCI standardına uyar ve Podman ya da containerd gibi diğer araçlarla da çalıştırılabilir.
Konteynerler Windows ve macOS'ta çalışabilir mi?
Evet. Docker Desktop gibi araçlar, macOS ve Windows'ta Linux konteynerlerini hafif bir sanal makine içinde çalıştırır; Windows ayrıca yerel Windows konteynerlerini de destekler.
Sık karşılaştırılanlar
İlgili sayfalar
- DockerDevOps ve Bulut, s. 15Docker, bir uygulamayı ve ihtiyaç duyduğu her şeyi, her makinede aynı şekilde çalışan bir konteyner içinde paketlemeye yarayan açık kaynaklı bir platformdur.
- KubernetesDevOps ve Bulut, s. 30Kubernetes, konteynerli uygulamaların bir makine kümesi üzerinde dağıtılmasını, ölçeklenmesini ve yönetilmesini otomatikleştiren açık kaynaklı bir sistemdir.
- Sanal MakineDevOps ve Bulut, s. 45Sanal makine, paylaşılan fiziksel donanımda kendi işletim sistemini çalıştıran, aynı ana makinedeki diğerlerinden yalıtılmış yazılım tabanlı bilgisayardır.
- DevOpsDevOps ve Bulut, s. 13DevOps, yazılım geliştirme ile BT operasyonlarını birleştirerek yazılımın daha hızlı ve güvenilir sunulmasını sağlayan bir kültür ve pratikler bütünüdür.
- MikroservislerYazılım Mimarisi, s. 24Mikroservisler, bir uygulamanın ağ üzerinden iletişim kuran, küçük ve bağımsız olarak dağıtılabilen servislere bölündüğü bir mimari tarzdır.
- ServerlessDevOps ve Bulut, s. 46Serverless, sağlayıcının kodu talep üzerine çalıştırıp sunucuları yönettiği, otomatik ölçeklediği ve yalnızca gerçek kullanıma ücret aldığı bulut modelidir.
- Hypervisorİşletim Sistemleri, s. 14Hypervisor, tek bir fiziksel bilgisayarın CPU, bellek ve aygıtlarını paylaştırarak yalıtılmış sanal makineler oluşturan ve çalıştıran yazılımdır.
- Twelve-Factor AppYazılım Mimarisi, s. 44Twelve-factor app, bulutta taşınabilir, dağıtımı kolay ve ölçeklenmesi basit olması için on iki pratiğe göre geliştirilmiş bir web uygulamasıdır.
Kaynaklar
Bu sayfada bir hata ya da eksik mi gördünüz?Düzeltme önerin