¿Cómo verificar las conexiones de red establecidas en Docker?
Vea y administre las conexiones de red establecidas por los contenedores de Docker.
A menudo, cuando se trabaja con contenedores Docker, necesitamos ver las conexiones de red utilizadas por el contenedor para la depuración inicial o la resolución de problemas. Es posible que desee ver qué IP está escuchando en el puerto o cuántas conexiones están actualmente activas en el contenedor.
Dado que Docker es un entorno aislado, ejecutar netstat en el servidor no le brindará conectividad de red para el contenedor. En su lugar, debe ingresar al contenedor para ejecutar netstat o ejecutarlo de forma remota.
Veamos estas dos opciones…
#1. en el contenedor Docker para ejecutar netstat
Como primer paso, busque el ID de contenedor del contenedor que desea solucionar.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0ce7cfb9be37 nginx "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp web-server
4ab8551671d7 nginx "/docker-entrypoint.…" 6 minutes ago Up 6 minutes 80/tcp vigilant_ganguly
$
Aquí quiero comprobar el contenedor con ID 0ce7cfb9be37
Ahora, para obtener una sesión de shell (bash) para este contenedor, use:
$ docker exec -it 0ce7cfb9be37 bash
Esto debería llevarlo al indicador de bash dentro del contenedor.
[email protected]:/#
puedes instalar netstat
paquete para encontrar conexiones de red establecidas. Es posible que estas utilidades no estén disponibles dentro del contenedor de forma predeterminada.
Entonces, para instalarlo, use:
apt update apt install net-tools
Now, we can use the netstat command as usual.
# netstat -an
producción:
Active Internet connections (servers and established) Proto Recv-Q Send-Q Local Address Foreign Address State tcp 0 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 Active UNIX domain sockets (servers and established) Proto RefCnt Flags Type State I-Node Path unix 3 [ ] STREAM CONNECTED 35748 unix 3 [ ] STREAM CONNECTED 35749
Como puede ver en el resultado anterior, las conexiones establecidas se enumeran junto con sus direcciones de origen y destino. Para ver qué procesos están escuchando en un puerto, puede usar:
# netstat -tulnp
producción:
Active Internet connections (only servers)
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. Ejecute netstat sin ingresar al contenedor
Primero, necesitamos obtener la identificación del contenedor docker ps
Pedido.
[[email protected] ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5db9a01d4a8 postgres:13.1-alpine "docker-entrypoint.s…" 9 days ago Up 9 days 0.0.0.0:5432->5432/tcp relicflare_server_postgres
[[email protected] ~]#
Luego, ejecute el comando docker como se muestra a continuación para averiguar todas las conexiones establecidas para el contenedor.
docker exec e5db9a01d4a8 netstat |grep ESTABLISHED
Esto dará como resultado algo como lo siguiente.
[[email protected] ~]# 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
[[email protected] ~]#
Así que la idea es ejecutar el comando netstat junto con docker exec
Pedido.
en conclusión
Ahora que tiene los detalles de conexión requeridos, puede continuar con la solución de problemas mirando más en la ventana acoplable y los registros de procesos.