Saltar al contenido

Descubriendo la interfaz veth # de un contenedor docker

Solución:

los iflink del contenedor es el mismo que el ifindex de El veth#.

Puedes conseguir el iflink del contenedor de la siguiente manera:

docker exec -it <container-name> bash -c 'cat /sys/class/net/eth0/iflink'

Diga, eso da como resultado 12, luego grep para eso:

grep -l 12 /sys/class/net/veth*/ifindex

Eso dará un resultado único, en mi sistema:

/sys/class/net/veth11d4238/ifindex

Combine eso en un guión:

#!/bin/bash

for container in $(docker ps -q); do
    iflink=`docker exec -it $container bash -c 'cat /sys/class/net/eth0/iflink'`
    iflink=`echo $iflink|tr -d 'r'`
    veth=`grep -l $iflink /sys/class/net/veth*/ifindex`
    veth=`echo $veth|sed -e 's;^.*net/(.*)/ifindex$;1;'`
    echo $container:$veth
done

El guión fue escrito para que sea fácil de seguir.

Ejecución de muestra:

$ docker ps -q
c4d8096eff43
34ac6e9f1e6e
d5a2aa5f3de3

$ sudo ./vethfinder
c4d8096eff43:veth11d4238
34ac6e9f1e6e:veth7d52cd1
d5a2aa5f3de3:vethe46073d

Referencia: https://forums.docker.com/t/relationship-between-interface-vethxxxxx-and-container/12872/20

busca todas las interfaces en contenedores.

#!/bin/bash

for container in $(docker ps --format '{{.Names}}'); do
    iflink=`docker exec -it $container bash -c 'cat /sys/class/net/eth*/iflink'`
    for net in $iflink;do
        net=`echo $net|tr -d 'r'`
        veth=`grep -l $net /sys/class/net/veth*/ifindex`
        veth=`echo $veth|sed -e 's;^.*net/(.*)/ifindex$;1;'`
        echo $container:$veth
    done
done
¡Haz clic para puntuar esta entrada!
(Votos: 0 Promedio: 0)


Tags : /

Utiliza Nuestro Buscador

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *