tag run hub docker netstat alpine

run - docker tag image



Docker: ¿alguna forma de enumerar los sockets abiertos dentro de un contenedor de ventana acoplable en ejecución? (2)

Los dos comandos de @larsks responden combinados en una sola línea; no es necesario copiar y pegar los PID (solo reemplazar el container_name_or_id ):

sudo nsenter -t $(docker inspect -f ''{{.State.Pid}}'' container_name_or_id) -n netstat

Me gustaría ejecutar netstat dentro de un contenedor de ventana acoplable en ejecución para ver los sockets TCP abiertos y sus estados. Pero, en algunos de mis contenedores docker, netstat no está disponible. ¿Hay alguna forma de obtener sockets abiertos (y sus estados, y a qué direcciones IP se conectan, en caso de que existan) sin usar netstat, a través de alguna API docker? (Por cierto, mi contenedor usa un docker-proxy, es decir, no directamente puenteado)

Supongo que podría mirar el sistema de archivos / proc directamente, pero en ese punto, también podría acoplar cp netstat en el contenedor y ejecutarlo. Me preguntaba si habría alguna instalación que la portuaria pudiera proporcionar para esto.


Puede usar el comando nsenter para ejecutar un comando en su host dentro del espacio de nombres de red del contenedor Docker. Solo obtén el PID de tu contenedor Docker:

docker inspect -f ''{{.State.Pid}}'' container_name_or_id

Por ejemplo, en mi sistema:

$ docker inspect -f ''{{.State.Pid}}'' c70b53d98466 15652

Y una vez que tenga el PID, nsenter como argumento para la opción de destino ( -t ) de nsenter . Por ejemplo, para ejecutar netstat dentro del espacio de nombres de la red de contenedores:

$ sudo nsenter -t 15652 -n netstat Active Internet connections (only servers) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN

Tenga en cuenta que esto funcionó a pesar de que el contenedor no tiene instalado netstat :

$ docker exec -it c70b53d98466 netstat rpc error: code = 13 desc = invalid header field value "oci runtime error: exec failed: container_linux.go:247: starting container process caused /"exec: ///"netstat///": executable file not found in $PATH/"/n"

( nsenter es parte del paquete util-linux )