Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Şunlar için geçerlidir: Windows Server 2025, Windows Server 2022, Windows Server 2019, Windows Server 2016
Windows kapsayıcıları iki ayrı çalışma zamanı yalıtımı modu sunar: process ve Hyper-V yalıtımı. Her iki yalıtım modu altında çalışan kapsayıcılar aynı şekilde oluşturulur, yönetilir ve çalışır. Ayrıca, aynı kapsayıcı görüntüleri üretir ve tüketirler. Yalıtım modları arasındaki fark kapsayıcı, konak işletim sistemi ve bu konakta çalışan diğer tüm kapsayıcılar arasında ne derece yalıtım oluşturulduğudur.
İşlem Yalıtımı
Bu kapsayıcılar için "geleneksel" yalıtım modudur ve Windows kapsayıcılara genel bakış bölümünde açıklanan moddur. İşlem yalıtımıyla, birden çok kapsayıcı örneği ad alanı, kaynak denetimi ve diğer işlem yalıtım teknolojileri aracılığıyla sağlanan yalıtımla belirli bir konakta eşzamanlı olarak çalışır. Kapsayıcılar bu modda çalışırken hem ana bilgisayarla hem de birbirleriyle aynı işletim sistemi çekirdeğini paylaşır. Bu, Linux kapsayıcılarının çalışma şekliyle yaklaşık olarak aynıdır.
Neler yalıtılır
Windows kapsayıcıları, çeşitli işletim sistemi ad alanlarına erişimi sanallaştırır. Ad alanı, bir ad aracılığıyla bilgilere, nesnelere veya kaynaklara erişim sağlar. Örneğin, dosya sistemi büyük olasılıkla en iyi bilinen ad alanıdır. Windows'ta kapsayıcı başına yalıtılmış çok sayıda ad alanı vardır:
- dosya sistemi
- Kayıt defteri
- ağ bağlantı noktaları
- işlem ve iş parçacığı kimliği alanı
- Nesne Yöneticisi ad alanı
Yalıtım sınırının delinmesi
Yalıtım sınırını delmenin yararlı olduğu durumlar vardır. Bu işlemler kullanıcı tarafından kasıtlı olarak istenmelidir ve kapsayıcının güvenlik duruşunu tehlikeye atabileceği için dikkatli bir şekilde yapılmalıdır. Windows kapsayıcıları aşağıdakileri destekler:
- paylaşılan dosya veya birimleri konaktan kapsayıcıya eşleme
- Ana bilgisayardan kapsayıcının içine adlandırılmış bir boruyu eşlemek
- konaktan kapsayıcıya bağlantı noktası eşleme
- ağ ad alanını özelleştirme ve paylaşma
- Kapsayıcı konak cihazı görünürlüğünü paylaşma
Windows kapsayıcıları şu anda şu anda şu desteği desteklemiyor:
- paylaşılan bellek
- eşitleme nesnelerini paylaşma (semaforlar, mutexler vb.)
- paylaşılan işlem ad alanları
Hyper-V yalıtımı
Bu yalıtım modu, konak ve kapsayıcı sürümleri arasında gelişmiş güvenlik ve daha geniş uyumluluk sunar. Hyper-V yalıtımıyla, birden çok kapsayıcı örneği bir ana bilgisayarda eşzamanlı olarak çalışır; ancak, her kapsayıcı yüksek düzeyde optimize edilmiş bir sanal makinenin içinde çalışır ve etkili bir şekilde kendi çekirdeğine sahip olur. Sanal makinenin varlığı, hem kapsayıcı konağı hem de her kapsayıcı arasında donanım düzeyinde yalıtım sağlar.
Yalıtım örnekleri
Kapsayıcı oluşturma
Hyper-V yalıtılmış kapsayıcılarını Docker ile yönetmek, işlemden yalıtılmış kapsayıcıları yönetmekle neredeyse aynıdır. Docker kullanarak Hyper-V yalıtımına sahip bir kapsayıcı oluşturmak için --isolationayarlamak için --isolation=hyperv parametresini kullanın.
docker run -it --isolation=hyperv mcr.microsoft.com/windows/servercore:ltsc2019 cmd
Docker aracılığıyla işlem yalıtımına sahip bir kapsayıcı oluşturmak için --isolationayarlamak için --isolation=process parametresini kullanın.
docker run -it --isolation=process mcr.microsoft.com/windows/servercore:ltsc2019 cmd
Windows Server'da çalışan Windows kapsayıcıları varsayılan olarak işlem yalıtımıyla çalışır. Windows 10 Pro ve Enterprise üzerinde çalışan Windows kapsayıcıları varsayılan olarak Hyper-V yalıtımla çalışır. Windows 10 Ekim 2018 güncelleştirmesiyle başlayarak, Windows 10 Pro veya Enterprise konağı çalıştıran kullanıcılar işlem yalıtımına sahip bir Windows kapsayıcısı çalıştırabilir. Kullanıcıların --isolation=process bayrağını kullanarak doğrudan işlem yalıtımı istemesi gerekir.
Uyarı
Windows 10 Pro ve Enterprise'da işlem yalıtımıyla çalışmak, geliştirme/test amaçlıdır. Ana bilgisayarınızın Windows 10 sürüm 17763+ derlemesini çalıştırıyor olması ve Docker Motoru sürüm 18.09 veya daha yenisine sahip olmanız gerekir.
Üretim dağıtımları için konak olarak Windows Server'ı kullanmaya devam etmelisiniz. Bu özelliği Windows 10 Pro ve Enterprise'da kullanarak konak ve kapsayıcı sürümü etiketlerinizin eşleştiğinden de emin olmanız gerekir; aksi takdirde kapsayıcı başlatılamaz veya tanımsız davranış sergilenemez.
Yalıtım açıklaması
Bu örnek, işlem ve Hyper-V yalıtım arasındaki yalıtım özellikleri arasındaki farkları gösterir.
Burada işlemden yalıtılmış bir kapsayıcı dağıtılıyor ve uzun süre çalışan bir ping işlemi barındıracak.
docker run -d mcr.microsoft.com/windows/servercore:ltsc2019 ping localhost -t
docker top komutu kullanılarak, ping işlemi kapsayıcı içinde görüldüğü gibi döndürülür. Bu örnekteki işlemin kimliği 3964'tür.
docker top 1f8bf89026c8f66921a55e773bac1c60174bb6bab52ef427c6c8dbc8698f9d7a
3964 ping
Kapsayıcı konağında çalışan ping işlemlerini döndürmek için get-process komutu kullanılabilir. Bu örnekte bir tane vardır ve işlem kimliği kapsayıcıdaki kimlikle eşleşir. Hem kapsayıcı üzerinde hem de ana bilgisayarda aynı süreç görülebilir.
get-process -Name ping
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id SI ProcessName
------- ------ ----- ----- ----- ------ -- -- -----------
67 5 820 3836 ...71 0.03 3964 3 PING
Buna karşılık, bu örnekte ayrıca bir ping işlemiyle Hyper-V yalıtılmış bir kapsayıcı başlatılır.
docker run -d --isolation=hyperv mcr.microsoft.com/windows/servercore:ltsc2019 ping localhost -t
Benzer şekilde, docker top kapsayıcıdan çalışan işlemleri döndürmek için kullanılabilir.
docker top 5d5611e38b31a41879d37a94468a1e11dc1086dcd009e2640d36023aa1663e62
1732 ping
Ancak, kapsayıcı konağında işlem aranırken bir ping işlemi bulunmaz ve bir hata oluşur.
get-process -Name ping
get-process : Cannot find a process with the name "ping". Verify the process name and call the cmdlet again.
At line:1 char:1
+ get-process -Name ping
+ ~~~~~~~~~~~~~~~~~~~~~~
+ CategoryInfo : ObjectNotFound: (ping:String) [Get-Process], ProcessCommandException
+ FullyQualifiedErrorId : NoProcessFoundForGivenName,Microsoft.PowerShell.Commands.GetProcessCommand
Son olarak, host üzerinde çalışan sanal makine olan vmwp işlemi görünür, bu sanal makine, kapsayıcıyı devrede tutarak çalışan işlemleri konak işletim sisteminden korur.
get-process -Name vmwp
Handles NPM(K) PM(K) WS(K) VM(M) CPU(s) Id SI ProcessName
------- ------ ----- ----- ----- ------ -- -- -----------
1737 15 39452 19620 ...61 5.55 2376 0 vmwp