Geekflare recibe el apoyo de nuestra audiencia. Podemos ganar comisiones de afiliación de los enlaces de compra en este sitio.
En DevOps Última actualización: 25 de septiembre de 2023
Compartir en:
Escáner de seguridad de aplicaciones web Invicti - la única solución que ofrece verificación automática de vulnerabilidades con Proof-Based Scanning™.

Ver y gestionar las conexiones de red establecidas por un contenedor Docker.

A menudo, mientras trabajamos con un contenedor Docker, necesitamos echar un vistazo a las conexiones de red que está utilizando el contenedor con fines de depuración inicial o de resolución de problemas. Es posible que desee ver qué IP está escuchando en un puerto o cuántas conexiones están activas actualmente en el contenedor.

Dado que un Docker es un entorno aislado, ejecutar netstat en un servidor no le dará las conexiones de red del contenedor. En su lugar, tiene que entrar en un contenedor para ejecutar el netstat o ejecutarlo de forma remota.

Veamos ambas opciones...

# 1. Entrar dentro del contenedor Docker para ejecutar netstat

Como primer paso, encuentre el ID de contenedor del contenedor que desea solucionar.

$ docker ps
ID DE CONTENEDOR IMAGEN COMANDO CREADO ESTADO PUERTOS NOMBRES
0ce7cfb9be37 nginx "/docker-entrypoint...." hace 2 minutos Arriba 2 minutos 0.0.0.0:80->80/tcp web-server
4ab8551671d7 nginx "/docker-entrypoint...." hace 6 minutos Arriba 6 minutos 80/tcp vigilant_ganguly
$

Aquí lo que quiero solucionar es el contenedor con ID 0ce7cfb9be37. Ahora para obtener una sesión shell (bash) de este contenedor, utilice:

$ docker exec -it 0ce7cfb9be37 bash

Esto debería llevarlo a un prompt bash dentro del contenedor.

root@0ce7cfb9be37:/#

Puede instalar el paquete netstat para buscar conexiones de red establecidas. Por defecto, estas utilidades pueden no estar disponibles dentro del contenedor.

Así que para instalarlo, utilice

apt update
apt install net-tools

Ahora, podemos utilizar el comando netstat como de costumbre.

# netstat -an

Salida:

Conexiones a Internet activas (servidores y establecidas)
Proto Recv-Q Send-Q Dirección local Dirección extranjera Estado
tcp 0 0 0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 172.17.0.3:80 223.233.99.46:64429 FIN_WAIT2
tcp 0 0 172.17.0.3:80 223.233.99.46:4811 ESTABLISHED
tcp 0 0 172.17.0.3:80 223.233.99.46:64430 FIN_WAIT2
tcp 0 0 172.17.0.3:80 223.233.99.46:4810 ESTABLISHED
tcp6 0 0 :::80 :::* LISTEN
Sockets de dominio UNIX activos (servidores y establecidos)
Proto RefCnt Flags Type State I-Node Path
unix 3 [ ] STREAM CONNECTED 35748
unix 3 [ ] STREAM CONNECTED 35749

Como puede ver en la salida anterior, se enumeran las conexiones establecidas con sus direcciones de origen y destino. Para ver los procesos que escuchan en los puertos, puede utilizar:

# netstat -tulnp

Salida:

Conexiones activas a Internet (sólo servidores)
Proto Recv-Q Send-Q Local Address Foreign Address State PID/Program name
tcp 0 0 0.0.0.0:80 0.0.0.0:* LISTEN 1/nginx: master pro
tcp6 0 0 :::80 :::* LISTEN 1/nginx: master pro

# 2. Ejecutar netstat sin entrar en el contenedor

Lo primero es obtener el ID del contenedor con el comando docker ps.

[root@relicflare-shared-services ~]# docker ps
ID DEL CONTENEDOR IMAGEN COMANDO CREADO ESTADO PUERTOS NOMBRES
e5db9a01d4a8 postgres:13.1-alpine "docker-entrypoint.s..." 9 días atrás Arriba 9 días 0.0.0.0:5432->5432/tcp relicflare_server_postgres
[root@relicflare-shared-services ~]#

Y, a continuación, ejecute el comando docker como se indica a continuación para averiguar todas las conexiones establecidas para el contenedor.

docker exec e5db9a01d4a8 netstat |grep ESTABLISHED 

Esto daría como resultado algo como lo siguiente

[root@relicflare-servicios-compartidos ~]# docker exec e5db9a01d4a8 netstat | grep ESTABLISHED
tcp 0 0 e5db9a01d4a8:postgresql 161.35.XXX.XXX:49128 ESTABLISHED 
udp 0 0 localhost:48818 localhost:48818 ESTABLISHED 
[root@relicflare-servicios-compartidos ~]# 

Así que la idea es ejecutar el comando netstat junto con el comando docker exec.

Conclusión

Ahora que dispone de los detalles de conexión necesarios, puede continuar con la resolución de problemas mirando más a fondo los registros de docker y de procesos.

  • Abhishek Nair
    Autor
Gracias a nuestros patrocinadores
Más lecturas sobre DevOps
Potencia tu negocio
Algunas de las herramientas y servicios que le ayudarán a hacer crecer su negocio.
  • Invicti utiliza el Proof-Based Scanning™ para verificar automáticamente las vulnerabilidades identificadas y generar resultados procesables en tan solo unas horas.
    Pruebe Invicti
  • Web scraping, proxy residencial, gestor de proxy, desbloqueador web, rastreador de motores de búsqueda, y todo lo que necesita para recopilar datos web.
    Pruebe Brightdata
  • Monday.com es un sistema operativo de trabajo todo en uno que te ayuda a gestionar proyectos, tareas, trabajo, ventas, CRM, operaciones, flujos de trabajo y mucho más.
    Prueba Monday
  • Intruder es un escáner de vulnerabilidades en línea que encuentra puntos débiles de ciberseguridad en su infraestructura, para evitar costosas violaciones de datos.
    Prueba Intruder