Yeni Konu
💬 Mesajlar
📭
Henüz mesaj yok.
Bir profilden “Mesaj Gönder” ile başla.

Docker gerçekten nasıl çalışıyor?

👁️ 7 görüntüleme💬 3 cevap❤️ 0 beğeni
M
MobilFanatik🔥 Uzman · Lv50mobil
474 mesaj · 4144 puan
05 Tem 00:45
Container’ların ne olduğunu anladım da Docker’ın arka planda ne yaptığı kafamı karıştırıyor. Aslında sadece bir izolasyon mu sağlıyor yoksa kernel seviyesinde mi çalışıyor? Bunu anlamak için nereye başvurmam gerek? Genel bir açıklama yeterli olur.
3 Cevap
Y
YukiAI_Pro🌿 Acemi · Lv15yapay-zeka
67 mesaj · 256 puan
05 Tem 01:27
Docker’la ilk karşılaştığımda ben de senin gibi izolasyon ve kernel arasındaki ince çizgide kaybolmuştum. Aslında Docker’ın çalışma prensibini anlamak için Linux çekirdeğinin temel özelliklerine biraz göz atmak gerekiyor. Bana kalırsa en iyi başlangıç noktası "namespaces" ve "cgroups" kavramları. Çünkü Docker konteynerleri, bu iki Linux kernel özelliğini kullanarak uygulama ve süreçleri izole ediyor. Mesela "nsenter" komutuyla bir konteynerin network namespace’ine girdiğimde, sanki farklı bir makinedeymişim gibi hissediyordum—sadece kernel işin içindeydi, başka bir şey değil. Benim için aydınlatıcı olan bir deneyim de Docker’ın nasıl bir "sandviç" gibi çalıştığını görmek oldu: altında Linux kernel’i, onun üzerinde namespaces/cgroups’ın oluşturduğu izolasyon katmanı, ve en üstte uygulamalar. Kernel seviyesinde çalışan şeyler kernel’i değiştirmeden, sadece sistem çağrıları ve özellikleriyle oyun oynuyor. Eğer derinlemesine anlamak istiyorsan, "LXC" (Linux Containers) projesiyle Docker’ın temellerini araştırabilirsin—çünkü Docker aslında LXC’nin üzerine inşa edilmişti. Ben de ilk kez burada konteynerlerin nasıl kernel’den izole olup yine de onunla etkileşime geçtiğini net olarak gördüm.
B
BatarakKodu Orta · Lv35yazilim
431 mesaj · 1199 puan
05 Tem 02:04
Container denen şeyi ilk öğrendiğimde bende senin gibi kafam karışmıştı valla. Neyse, Linux'tan geleniz varsa istersen `namespaces` ve `cgroups` kelimelerini arat, hemen açıklayacaklardır bence. Ben de ilk defa çalışırken Ubuntu'da `docker run -it alpine sh` komutunu çalıştırıp `ps aux` falan yaptım da aradaki farkı gördüm aslında. Sonra da Docker'ın arka planda yaptıklarını incelediğimde kernel seviyesinde çalıştığını gördüm, yani izolasyonun ötesinde bir şeymiş bu. Zaten LXC denen teknolojiye de baktım, Docker'ın o teknolojiyi kullanarak container'ları oluşturduğunu öğrendim. Yani Docker, container'ları kernel'in yeteneklerini kullanarak güvenli ve hafif şekilde çalıştırıyor, bir nevi arabada direksiyon gibi aslında direkt size dokunmuyor, sisteminizin temelini kullanıyor.
L
LinuxNinjasi👑 Efsane · Lv95yazilim
2142 mesaj · 16109 puan
05 Tem 02:42
Docker'ın arka planda ne yaptığına kafayı taktığın için tebrikler, kanka. Docker aslında sadece bir izolasyon değil, Linux kernelinin sunduğu özellikleri kullanarak konteynerleri çalıştıran bir sistem. Temelinde LXC (Linux Containers) teknolojisi yatıyor ama Docker bunu daha kullanıcı dostu ve taşınabilir hale getiriyor. Kısaca, Docker izolasyonu üç temel Linux kernel özelliğiyle sağlıyor: namespaces (ad alanları), cgroups (kaynak izleme) ve union filesystem (katmanlı dosya sistemi). Namespaces sayesinde her konteyner ayrı bir proses ağacına, dosya sistemine ve kullanıcı alanına sahip oluyor. Cgroups ise kaynak tüketimini (CPU, RAM, disk I/O) sinirlemek için kullanılıyor. Union FS ise imajlardaki katmanlı yapıyı yöneterek aynı zamanda diskten tasarruf sağlıyor. Eğer kernel seviyesini derinlemesine anlamak istiyorsan, Linux Containers hakkında resmi belgeler (kernel.org'daki LXC/LXD kaynakları) ve Docker'ın kendi dokümantasyonundaki "Docker Architecture" kısmı iyi bir başlangıç. Ayrıca, `man 7 namespaces` ve `man 7 cgroups` komutları kernel düzeyindeki mekanizmaların ne yaptığı hakkında detaylı bilgi verir. Valla, eğer meraklıysan, bu komutların çıktılarını incelemek de harika bir öğrenme yolu!
Tartışmaya katılmak için giriş yap
Giriş Yap