Docker ana bilgisayar işletim sistemi ile kapsayıcı temel görüntü işletim sistemi arasındaki ilişki nedir?


122

Doğru soruyu sorduğumdan emin değilim ... ama elime geçebileceğim her şeyi docker okurken Ubuntu 12.04'e Docker yükleyebileceğimi görüyorum (örneğin) ve sonra kurabilirim bir Fedora kapsayıcısı mı yoksa farklı bir ubuntu sürümü mü? (Kullanıcının kapsayıcıya busybox yüklediği bir örnek var.)

Ve tabii ki tamamen yanılıyor olabilirim.

Ancak temel sistem ile konteyner arasında geçici bir bağlantı olması benim beklentim olurdu.

yeniden ifade edildi: ana bilgisayar işletim sistemi ile kapsayıcı temel görüntünün işletim sistemi arasındaki ilişki nedir?

Yanıtlar:


100

BraveNewCurrency tarafından belirtildiği gibi, ana işletim sistemi ile kapsayıcı arasındaki tek ilişki Kernel'dir.

Docker ve 'normal' sanal makineler arasındaki temel farklardan biridir, ek yük yoktur, her şey doğrudan ana bilgisayarın çekirdeği içinde gerçekleşir.

Bu nedenle, konteyner içinde yalnızca Linux tabanlı dağıtım / ikili dosyaları çalıştırabilirsiniz. Başka bir şey çalıştırmak istiyorsanız, imkansız değildir, ancak konteyner içinde bir tür sanallaştırmaya ihtiyacınız olacaktır (qemu, kvm, vb.)

Docker, dosya sistemi temsili olan görüntüleri yönetir. Herhangi bir linux dağıtımını kurabilir veya basitçe ikili dosyalar koyabilirsiniz.

Aslında, örneğin rahatlığı için, genellikle temel görüntülere güveniriz, ancak görüntünüzü dağıtım kitaplıkları / ikili dosyalar olmadan da oluşturabilirsiniz. Bu şekilde gerçekten küçük ama işlevsel bir konteynere sahip olursunuz.

Dağıtımlarla ilgili bir nokta daha: Çekirdek hala ana bilgisayarın çekirdeği olduğundan, dağıtım tarafından sağlanan herhangi bir özel çekirdek modülüne / yamalarına sahip olmayacaksınız.


2
yani ana işletim sistemi Ubuntu ise, konteyner de Ubuntu olacak mı?
Richard

21
Konteynerin çekirdeği ubuntu'dan gelecek, ama daha fazlası değil. Konteyner olarak centos, archlinux, debian veya herhangi bir linux tabanlı dağıtımı kolaylıkla çalıştırabilirsiniz.
creack

37
Bu bilgiler docker web sitesinde doğrudan / dolaylı olarak belirtilse de, bunu biraz daha netleştirmeleri gerektiğini düşünüyorum. Ana sayfada, genel bakışta, etkileşimli öğreticide ve temel eğitimlerin çoğunda çalıştım. Buna rağmen bu konuda kafam karışmıştı ve docker'dan en iyi performansın (sitedeki mimari diyagramlara göre) ana bilgisayar ve kapsayıcı işletim sisteminde bir eşleşme gerektireceğini varsaymaya başlıyordum. "Linux çekirdeği" kavramında yeniyim, bu yüzden bu benim için hemen anlaşılmadı. Bunu bilmek, liman işçisini baş belası kılar.
ctrlplusb

2
Docker, gelişmiş özelliklerden yararlanan oldukça karmaşık bir projedir. Bir noktada, kullanıcının işletim sistemi ile dağıtım arasındaki fark gibi bazı bilgilere sahip olduğunu varsayıyoruz. Değer katacağını düşünüyorsanız, dokümantasyon açık kaynaktır ve bir çekme talebi gönderebilirsiniz.
creack

3
Bu, bir işletim sisteminin yalnızca kullanıcı alanı bölümlerinin (kitaplıklar, komutlar, uygulamalar) kapsayıcıya alınabileceğini gösteriyor gibi görünüyor. Uygulama farklı bir çekirdek revizyonu gerektiriyorsa (örn. 3.10'a karşı 4.9), o zaman bir kapta çalışmayabilir. Bu doğru mu?
David C.

23

Kelimenin tam anlamıyla, ortak noktaları olan tek şey çekirdek. Tüm dünyaları (dosya sistemi) docker konteynerinde.


1

Başka bir husus daha var - her iki çekirdek de aynı olsa bile, ana işletim sisteminin RHEL 6 gibi Docker'ı desteklememesi durumunda bir sorun var: https://access.redhat.com/solutions/1378023

Dolayısıyla, görüntü bir Linux olsa bile, RHEL 6'da bir konteyneri döndüremeyeceksiniz.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.