Bunu Docker ile yapamazsınız, ancak kapsayıcının açıkta kalmayan bağlantı noktasına ana makineden erişebilirsiniz.
8000 numaralı bağlantı noktasında çalışan bir kabınız varsa,
wget http://container_ip:8000
Konteynerin ip adresini almak için 2 komutu çalıştırın:
docker ps
docker inspect container_name | grep IPAddress
Dahili olarak, Docker bir görüntüyü çalıştırdığınızda iptables çağırmak için mermi yapar, bu yüzden belki de bu konuda bazı değişiklikler olabilir.
localhosts bağlantı noktası 8001'de kabın 8000 bağlantı noktasını göstermek için:
iptables -t nat -A DOCKER -p tcp --dport 8001 -j DNAT --to-destination 172.17.0.19:8000
Bunu çözmenin bir yolu, istediğiniz bağlantı noktası eşleme ile başka bir kapsayıcı kurmak ve iptables-save komutunun çıktısını karşılaştırmaktır (ancak, trafiği docker üzerinden gitmeye zorlayan diğer seçeneklerden bazılarını kaldırmak zorunda kaldım vekil).
NOT: bu liman işçisi yıkılıyor, bu yüzden iyi mavi duman oluşturabileceği bilinciyle yapılmalıdır
VEYA
Başka bir alternatif, rasgele ana bilgisayar bağlantı noktalarını kullanacak ve daha sonra bunları bağlayacak (yeni? Post 0.6.6?) -P seçeneğine bakmaktır.
VEYA
0.6.5 ile, mevcut kapsayıcıyla konuşan yeni bir kapsayıcı getirmek ve bu kapsayıcı -p bayraklarına ek bir geçiş yapmak için LINK'ler özelliğini kullanabilirsiniz? (Henüz LINK kullanmadım)
VEYA
docker 0.11 ile mi? docker run --net host ..
kapsayıcınızı doğrudan ana bilgisayarın ağ arabirimlerine bağlamak için kullanabilirsiniz (ör. net, ad aralıklı değildir) ve böylece kapta açtığınız tüm bağlantı noktaları açığa çıkar.