Windows Container – Port mapping

By | 10 December 2017

Default olarak container networklerindeki NAT modu izole edilmiş bir moddur. Yani dış dünyadan bu network’e erişim sınırlıdır. Eğer içeride dışarıdan erişilmesini istediğiniz bileşenler var ise port mapping yaparak içeride bulunan endpointlerinizi dışarıya yayınlayabilirsiniz.

Bu port mapping işlemi ile container host üzerinde bulunan interfacedeki port ile container’ın hizmet ettiği port eşleştirilir.

Eğer Nat networkü içerisinde 80 portunu kullanan iki container var ise her iki container’ı da container host üzerindeki 80 portundan mapleyemezsiniz. Bu sebeple external port olan 80’i bir container’a maplerken, diğer container için 80’den farklı olan herhangi bir portu kullanmanız gerekir.

Port mapping işlemini container’ı oluştururken belirlemek gerekir. Aksi taktirde bu işlemi yapabilmek için container’ı stop durumuna getirmek gereklidir.

docker run -it -p 8080:80 nanoserver/iis-mysql-php-wordpress

Bu işlemi yapıp container’ı oluşturduğunuzda container host’un ipsini kullanıp 8080 portunu aşağıdaki gibi yazdığınızda wordpress sayfası karşınıza gelecektir.

http://192.168.1.100:8080/wordpress

Ardından gerekli konfigürasyonları yaparak siteyi ayağa kaldırabilirsiniz. Siteye ilişkin bilgileri de docker hub üzerinden elde edebilirsiniz. (my sql root admin passwordü vs.)

Belli durumlarda container host üzerinde birden çok network interface var ise bunları container’lara ayrı ayrı map edebilirsiniz.

Bunu yapmak için container host üzerindeki adapter ismini belirleyip komutta kullanmanız yeterli olacaktır. Komutta Interface Name kısmına ilgili adapter ismini yazmanız yeterli olacaktır.

docker network create -d transparent -o com.docker.network.windowsshim.interface=<InterfaceName> <NetName>

Eğer birden fazla network interface ismini komuta yazarsanız, docker bu nicleri teamed olarak kullanacaktır. Aşağıdaki ilgili örneği görebilirsiniz.

docker network create -d transparent -o com.docker.network.windowsshim.interface=”Ethernet 2″, “Ethernet 3” TeamedNet

Son olarak container networklerinin belirli bir VLAN da olması gerekiyorsa, network oluştururken bunu da belirtebilirsiniz. Aşağıda da buna ilişkin örneği bulabilirsiniz. Komut üzerinde çok basit şekilde vlan id atamanız yeterli olacaktır.

docker network create -d transparent -o com.docker.network.windowsshim.vlanid=11 MyTransparentNetwork

özetle port mapping, network adapter binding ve vlan işlemlerinin container mimarisinde nasıl yapıldığını anlatmış olduk.

Bu Windows container özelinde yazacağım son makale oldu Bu konuya biraz ara verip başka konular ile ilgibi makaleler yazma planı içerisindeyim. Ancak ilerleyen zamanlarda container cluster mimarileri ve docker file’lar üzerine bir kaç yazı yazmak istiyorum.

Şimdilik bu kadar.

Görüşmek üzere.

Kaynak: Windows Container Ebook

Kaynak: https://docs.microsoft.com/en-us/virtualization/windowscontainers/manage-containers/container-networking

Fırat

Leave a Reply