Docker container çalıştırmanın IP adresi nasıl alınır


Yanıtlar:


116

Ana bilgisayarınızdan kapsayıcıya bağlantı noktalarını eşlemek istemiyorsanız, kapsayıcı için doğrudan docker aralığı ipine erişebilirsiniz. Bu aralığa varsayılan olarak yalnızca ana bilgisayarınızdan erişilir. Kapsayıcı ağ verilerinizi şunları yaparak kontrol edebilirsiniz:

docker inspect <containerNameOrId>

Muhtemelen filtrelemek daha iyidir:

docker inspect <containerNameOrId> | grep '"IPAddress"' | head -n 1

Genellikle, varsayılan docker ip aralığı 172.17.0.0/16. Ana makineniz olmalı 172.17.0.1ve 172.17.0.2her şey normalse ve herhangi bir özel ağ seçeneği belirtmediyseniz ilk kapsayıcınız olmalıdır .

EDIT "Bash tricking" yerine docker özelliklerini kullanmanın daha zarif bir yolu:

docker inspect -f "{{ .NetworkSettings.IPAddress }}" <containerNameOrId>

7
Dahili IP'den bahsediyorsunuz ve bunun eldeki soruyla hiçbir ilgisi yok. Cevabınız okuyucuya sadece kafa karışıklığı veriyor. IP, Docker'ın çalıştığı makinenin IP'sidir. Sadece localhost:)
David Gatti

Hatalısınız. OP, mikro hizmet hakkında dışarıdan erişilebilir olması gerektiğini belirtmedi. Yalnızca "tarayıcı aracılığıyla düğüm mikro hizmetini test edin" dedi ve bu http://172.17.0.2:anyPort, ana bilgisayardan önerilen yöntemimle yapılabilir . Elbette, ana bilgisayarda localhost kullanarak erişmek istiyorsanız, bağlantı noktalarını eşleştirmelisiniz. OP'nin ne istediğini görecek.
OscarAkaElvis

3
Ana bilgisayardan Kapsayıcı içindeki dahili IP'ye erişebileceğinizi mi söylüyorsunuz? Bu fiziksel olarak imkansız, bu tamamen farklı bir ağ. Sadece kontrol etmedim ve evet, docker kapsayıcımın 172.17.0.7'sine erişemiyorum, o zaman ana makinemi bir ağ tarayıcısı ile tararsam tüm docker yarışmacısını görebilirim ve bu durum böyle değil tekrar. Çalışmaması gerektiğini biliyorum, söylediklerinizi test ettim (asla bilemezsiniz) ve işe yaramıyor. Belki de açıklamanızda önemli bir kısım eksiktir?
David Gatti

Kaplara ana bilgisayardan erişilebilir. Kendiniz deneyin ... Size bazı ipuçları vereceğim. 1. Bir çalıştırma konteyneri indirin: docker run --name struts --rm -i tomcat2. Konteynırınızın ipini alın (eğer varsa): docker inspect struts | grep '"IPAddress"' | head -n 13. Ana bilgisayarın tarayıcısında açın http://x.x.x.x:8080. Apache Tomcat varsayılan sayfasını görebilirsiniz.
OscarAkaElvis


22

--formatTüm kapsayıcı bilgisi yerine yalnızca IP adresini almak için seçeneği kullanın :

sudo docker inspect --format '{{ .NetworkSettings.IPAddress }}' <CONTAINER ID>

4
Windows ana bilgisayarında tek tırnak yerine çift tırnak kullanın. Örneğin sudo docker inspect --format "{{.NetworkSettings.IPAddress}}" <CONTAINER ID veya NAME> Referans: bağlantı
Vineet Sajwan

1
kapsayıcı hakkında yeni bilgi formatı burada
Igor

20

Modern docker motorları için şu komutu kullanın:

docker inspect -f '{{range .NetworkSettings.Networks}}{{.IPAddress}}{{end}}' container_name_or_id

ve eski motorlar için şunları kullanın:

docker inspect --format '{{ .NetworkSettings.IPAddress }}' container_name_or_id

Orijinal OP alanında @sanyash tarafından yapılan yorumda bahsedildiği ve bağlantılı olduğu gibi.
Jesse Chisholm

Şablon ayrıştırma hatası: şablon:: 1: komutta beklenmeyen kapatılmamış eylem
gmlvsv

11

doğrudan konteyner içinde elde etmek istiyorsanız, deneyebilirsiniz

ip a | grep -oE "\b([0-9]{1,3}\.){3}[0-9]{1,3}\b" | grep 172.17

5

Konteynırınıza bayrak ile başlayabilirsiniz -P. Bu, görüntünüzün açığa çıkan bağlantı noktasına rastgele bir bağlantı noktası "atar".

İle docker port <container id>rastgele seçilen limanı görebilirsiniz. Böylece erişim mümkündür localhost:port.



-3

Bağlantı istasyonunun IP'sine bu ana makinenin dışından erişemezsiniz. Tarayıcınız başka bir makinedeyse, ana bilgisayar bağlantı noktasını konteyner bağlantı noktasına eşlemek -p 8080:8080için çalıştır komutunu iletmek daha iyidir .

Aktarma -p, ana bilgisayar bağlantı noktasını kapsayıcı bağlantı noktasına eşleyebilirsiniz ve söz konusu ana bilgisayar bağlantı noktası için tüm trafiği belirlenen kapsayıcı bağlantı noktasına iletmek için bir proxy ayarlanır.

Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.