GNU/Linux >> Tutoriales Linux >  >> Linux

¿Cómo identificar las interfaces veth huérfanas y cómo eliminarlas?

Solucionado al actualizar la ventana acoplable a la última versión. Nueva versión:

[email protected] ~ # docker version
Client:
 Version:      1.8.1
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   d12ea79
 Built:        Thu Aug 13 02:35:49 UTC 2015
 OS/Arch:      linux/amd64

Server:
 Version:      1.8.1
 API version:  1.20
 Go version:   go1.4.2
 Git commit:   d12ea79
 Built:        Thu Aug 13 02:35:49 UTC 2015
 OS/Arch:      linux/amd64

Ahora las interfaces se eliminan junto con los contenedores. Las antiguas interfaces huérfanas se eliminaron manualmente con el siguiente comando:

# ip link delete <ifname>

Hay tres problemas aquí:

  1. Iniciar un solo contenedor no debería aumentar el recuento de veth interfaces en su sistema por 2, porque cuando Docker crea un veth par, un extremo del par está aislado en el espacio de nombres del contenedor y no es visible desde el host.

  2. Parece que no puede iniciar un contenedor:

    Error response from daemon: Cannot start container ...
    
  3. Docker debería estar limpiando el veth interfaces automáticamente.

Estos hechos me hacen sospechar que hay algo fundamentalmente mal en su entorno. ¿Puedes actualizar tu pregunta con detalles sobre qué distribución estás usando, qué versión del kernel y qué versión de Docker?

¿Cómo puedo identificar qué interfaces están vinculadas con los contenedores existentes y cómo puedo eliminar la interfaz adicional que estaba vinculada con los contenedores eliminados?

Con respecto a la eliminación manual de veth interfaces:A veth la interfaz no es un puente, por lo que, por supuesto, no puede eliminar uno con brctl .

Para eliminar un veth interfaz:

# ip link delete <ifname>

Detectar interfaces "inactivas" es un problema más espinoso, porque si solo observa el tráfico, es probable que elimine accidentalmente algo que todavía estaba en uso pero que simplemente no estaba viendo mucha actividad.

Creo que lo que realmente querrías buscar es veth interfaces cuyo par es también visible en el espacio de nombres de la red global. Puedes encontrar el par de un veth interfaz utilizando estas instrucciones, y luego sería una simple cuestión de ver si esa interfaz está visible, y luego eliminar una u otra (eliminar un veth la interfaz también eliminará a su par).


Linux
  1. Cómo verificar la versión del sistema operativo y Linux

  2. Cómo eliminar búferes de memoria y caché en Linux

  3. Cómo crear y eliminar un grupo de usuarios en Linux

  4. ¿Cómo eliminar un directorio y una carpeta en Linux?

  5. Cómo verificar el sistema operativo y la versión usando un comando de Linux

Cómo encontrar y eliminar enlaces simbólicos rotos en Linux

Cómo encontrar y eliminar directorios vacíos en Linux

Cómo encontrar archivos duplicados en Linux y eliminarlos

Cómo crear, renombrar y eliminar ramas de Git

Esquemas de color en Vim:cómo cambiarlos y usarlos

Cómo eliminar archivos y directorios usando la línea de comandos de Linux