GNU/Linux >> Tutoriels Linux >  >> Linux

Comment identifier les interfaces veth orphelines et comment les supprimer ?

Corrigé par la mise à niveau du docker vers la dernière version.Nouvelle version :

[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

Désormais, les interfaces sont supprimées avec les conteneurs. Les anciennes interfaces orphelines ont été supprimées manuellement par la commande suivante :

# ip link delete <ifname>

Il y a trois problèmes ici :

  1. Le démarrage d'un seul conteneur ne doit pas augmenter le nombre de veth interfaces sur votre système par 2, car lorsque Docker crée un veth paire, une extrémité de la paire est isolée dans l'espace de noms du conteneur et n'est pas visible depuis l'hôte.

  2. Il semble que vous ne parveniez pas à démarrer un conteneur :

    Error response from daemon: Cannot start container ...
    
  3. Docker devrait nettoyer le veth interfaces automatiquement.

Ces faits me font soupçonner qu'il y a quelque chose de fondamentalement mauvais dans votre environnement. Pouvez-vous mettre à jour votre question avec des détails sur la distribution que vous utilisez, la version du noyau et la version de Docker ?

Comment puis-je identifier quelles interfaces sont liées à des conteneurs existants et comment puis-je supprimer une interface supplémentaire qui était liée à des contraintes supprimées ?

En ce qui concerne la suppression manuelle de veth interface :A veth l'interface n'est pas un pont, donc bien sûr vous ne pouvez pas en supprimer un avec brctl .

Pour supprimer un veth interface :

# ip link delete <ifname>

La détection des interfaces "inactives" est un problème plus épineux, car si vous ne regardez que le trafic, vous risquez de supprimer accidentellement quelque chose qui était encore utilisé mais qui ne voyait pas beaucoup d'activité.

Je pense que ce que vous voudriez réellement rechercher est veth interfaces dont le pair est aussi visible dans l'espace de noms du réseau global. Vous pouvez trouver le pair d'un veth interface en utilisant ces instructions, puis il suffirait de voir si cette interface est visible, puis de supprimer l'une ou l'autre (supprimer un veth l'interface supprimera également son homologue).


Linux
  1. Comment vérifier la version du système d'exploitation et de Linux

  2. Comment supprimer les tampons de mémoire et le cache sous Linux

  3. Comment supprimer un répertoire et un dossier sous Linux ?

  4. Comment identifier le nom du logiciel du serveur DNS distant et sa version ?

  5. Comment installer Python sur Ubuntu 20.04 et 18.04 ?

Comment trouver et supprimer des liens symboliques brisés sous Linux

Comment rechercher et supprimer des répertoires vides sous Linux

Comment trouver des fichiers en double sous Linux et les supprimer

Comment créer, renommer et supprimer des branches Git

Schémas de couleurs dans Vim :comment les modifier et les utiliser

Comment supprimer des fichiers et des répertoires à l'aide de la ligne de commande Linux