ver puertos procesos orden listar images exposicion encontro dockers detener contenedores contenedor comandos comando activos docker

puertos - ¿Puedo obtener una dirección IP dentro de mi contenedor de docker?



ver dockers activos (6)

Normalmente puede usar el programa de Linux ifconfig para obtener direcciones IP y otros detalles de red. Es posible que su contenedor no lo tenga, en cuyo caso deberá instalarlo a través de apt-get o yum o del administrador de paquetes de su distribución. Una tubería básica para obtener la dirección IP sería

ifconfig eth0 | grep "inet addr:" | cut -d : -f 2 | cut -d " " -f 1

¿Cómo obtener la dirección IP del contenedor dentro de este contenedor?

''docker inspeccionar $ hostname ...'' no es adecuado, porque no comparto /var/run/docker.sock host file al contenedor.


Encontré solución a mi problema:

/sbin/ip route|awk ''/scope/ { print $9 }''

Es imprimir algo como: ''172.17.0.135''


También puede buscar una línea en / etc / hosts que termine con un identificador de contenedor e imprima el primer campo:

sed -n ''s/^/([0-9/.]*/)[[:blank:]]*[0-9a-f]/{12,/}$//1/p'' /etc/hosts

Usaría awk, pero awk estándar en dedian: jessie no admite cuantificadores de expresiones regulares como {12,} .


Como la dirección IP está en la primera línea de / etc / hosts, puede hacer en un contenedor el comando awk que imprime la primera palabra de la primera línea de / etc / hosts

gg@805689be5f47:/$ awk ''END{print $1}'' /etc/hosts 172.17.0.14


Puedo encontrar la dirección IP con

hostname -i

Por supuesto, eso puede no ser completamente exacto si hay más de una interfaz.

Editar

Nota: Según la página man del nombre de hostname -i , el hostname -i usa DNS para resolver la dirección IP, donde el hostname -I muestra todas las direcciones, excepto el bucle invertido, no depende de DNS, y se recomienda.

En todos mis contenedores Docker, -i y -I devuelvo los mismos resultados (pero este no es el caso en mi escritorio).


¿Por qué no algo tan simple como:

grep "`hostname`" /etc/hosts|awk ''{print $1}''

o

grep "$HOSTNAME" /etc/hosts|awk ''{print $1}''