Temel Docker kavramlarından yoksundur. Tamamen farklı bir şey.
Bilmeniz gereken ilk şey Docker'ın felsefesidir: bir kapta izole edilmiş bir işlem yapın . Docker kapsayıcısında işletim sistemi çalıştırmazsınız, seçtiğiniz linux dağıtımına dayalı olarak kök dosya sistemi içeriğine sahip bir kapsayıcı içinde bir işlem yürütürsünüz. Ubuntu diğerleri arasında bir seçimdir.
Şimdi, sunucunuzun çalıştığı linux dağıtımından farklı bir linux temel görüntüsünün içinde bir işlemin nasıl elde edilebileceğini merak etmelisiniz. Bir işletim sisteminin çalışması için temel olarak aşağıdakilere ihtiyacınız vardır:
- Önyükleme dosya sistemi: yüklendikten sonra bellekte bulunacak önyükleyiciyi ve çekirdeği içerir. Docker kapları için bunu umursamıyoruz çünkü çekirdek ana bilgisayarla paylaşılıyor ve tüm linux dağıtımları arasındaki ortak kısım.
- Bir kök dosya sistemi: dosya sistemi yapısını içerir. Bir linux dağıtımından diğerine farklı olabilir. Önyükleme sırası bitene kadar salt okunurdur.
Docker, kapsayıcı içindeki disk blok katmanlarını yönetmek için UnionFS'yi kullanır, böylece bunları yığabilirsiniz.
Perde arkasında, birden fazla dosya sisteminin aynı anda monte edilmesini sağlayan ve tamamen sanal bir sistem gibi görünen bir birleşim bağlantısı kullanır. Aslında, temel görüntü katmanını salt okunur modda temel kök dosya sisteminin üstünde okuma-yazma modu olarak bırakır.
Burada, temel görüntünün geldiği linux dağıtımının, gerçek bir ana bilgisayara yüklendikten sonra aynı dosya sistemini içerecek şekilde katmanlı bir disk bloğu yığınınız var, ancak bu sefer bir kabın içinde.
Şimdi eksik olan son şey şudur: Bu şeyi nasıl izole edersiniz?
Cevap: ad alanları. Buradaki ayrıntılara girmeyeceğim çünkü orijinal sorudan biraz sapacaktı. Ancak bilmeniz gerekenler, çekirdek 2.4.19'dan beri, yıllar boyunca çeşitli türlerin ad alanlarının ortaya çıktığıdır. Şu anda aşağıdaki ad alanları mevcuttur:
- IPC: IPC ad alanı (süreçler arası iletişim)
- MNT: mount ad alanı
- NET: ağ ad alanı
- PID: pid ad alanı
- KULLANICI: kullanıcı ad alanı (uid)
- UTS: UTS ad alanı (ana bilgisayar adları)
Ad alanları, çekirdek içindeki işlemlerin belirli bir ortamla çalışmasına izin veren yalıtılmış yapılardır. Örneğin, MNT ad alanı, temel görüntü kök dosya sistemi özelliklerinde çalışan bir işlem elde etmek için temel özellik olacaktır. NET ad alanı, bir konteynerin liman köprüsü vb. İle iletişim kurmak için belirli ağ arayüzlerine sahip olması için bir başka önemli özellik olacaktır.
Yani, evet, tüm bunların temel amacı izole bir uygulama çalıştırmak, yerel ortamdan üretime konteyner denilen bir kutu içinde kolayca üretmektir.
Daha ileri gitmeden önce liman işçisinin belgelerini okumak iyi bir fikir olacaktır .