2014-07-07 32 views
29

Kaputun altında neler olup bittiğini anlamaya çalışıyorum, ana makineye bağlı olan telden gelen ve Docker kabının içindeki bir uygulamaya yönlendirilen bir ağ paketine.Bir docker kabının kendi TCP/IP yığını var mı?

Klasik bir VM olsaydı, ana makineye gelen bir paketin sanal makine sanal makinesine (VMware, VBox vb.) Sanal makineye ve TCP/IP yığını üzerinden iletileceğini biliyorum. Konuk işletim sisteminin son olarak uygulamaya ulaşması. Docker durumunda

, o kabın içindeki sanal arayüz eth0 sona eren bir veth çift bağlı olan, ana makinesinde gelen bir paket docker0 köprüye konağın ağ ara iletilir biliyoruz . Ama ondan sonra? Tüm Docker kapsayıcılar ana bilgisayar çekirdeğini kullandığından, paketin ana bilgisayar çekirdeğinin TCP/IP yığını tarafından işlendiğini varsaymak doğru mu? Öyleyse nasıl?

ayrıntılı açıklamasını gerçekten okumak isterim (ya da bağlantıyı kurmaktan çekinmeyin). Zaten this sayfasını dikkatlice okudum, ama her şey demek değil.

Cevabınız için şimdiden teşekkür ederiz.

+1

Evet, ana bilgisayar TCP/IP yığını kullanılır. Bağlandığınız sayfayı okuduktan sonra, linux çekirdeği ve docker kaynak kodunu okumaktan çok daha fazlasını eklemek zordur, bunun yerine özel sorularınız var mı? – nos

+0

Yorumunuz için teşekkürler. Örneğin, verilerin, makinenin “ethic0” köprüsünden “eth0” biçimine nasıl iletildiği belli değil: Ben wireshark kullanmayı denedim, ancak sadece "docker0" ve " vethXYZ'; Ayrıca, 'docker0' ve 'eth0' arasında adreslerin değişmesinden bu yana bir NAT olduğunu ve bununla ilgili bir belge bulamadıklarını varsayıyorum. –

+0

Doğru, çoğu, docker tarafından kullanılan NAT kuralları dahil olmak üzere bu belgede açıklanmıştır. – nos

cevap

9

Ağ yığını, "kodda" olduğu gibi, kesinlikle kapsayıcıda değil, ana bilgisayar ve tüm kapsayıcılar tarafından paylaşılan yalnızca bir tanesinin bulunduğu çekirdekte (zaten bunu biliyordunuz). Her kapsayıcının kendi ağ arabirimi ve yönlendirme tabloları olduğu anlamına gelen ad alanı ad alanıdır. http://blog.scottlowe.org/2013/09/04/introducing-linux-network-namespaces/ ve ben yararlı çok bu makaleyi buldum:

İşte bazı örnekler kavramını tanıtan kısa bir yazı var bu derin kazmak size yeterince işaretçileri verir umut http://containerops.org/2013/11/19/lxc-networking/

.

İlgili konular