GNU/Linux >> LINUX-Kenntnisse >  >> Linux

Wie erkennt man verwaiste Veth-Schnittstellen und wie löscht man sie?

Durch Docker-Upgrade auf die letzte Version behoben. Neue 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

Entfernen Sie jetzt Schnittstellen zusammen mit Containern. Alte verwaiste Schnittstellen wurden manuell mit folgendem Befehl gelöscht:

# ip link delete <ifname>

Hier gibt es drei Probleme:

  1. Das Starten eines einzelnen Containers sollte die Anzahl von veth nicht erhöhen Schnittstellen auf Ihrem System um 2, denn wenn Docker eine veth erstellt -Paar ist ein Ende des Paares im Container-Namespace isoliert und für den Host nicht sichtbar.

  2. Anscheinend können Sie keinen Container starten:

    Error response from daemon: Cannot start container ...
    
  3. Docker sollte veth bereinigen Schnittstellen automatisch.

Diese Tatsachen lassen mich vermuten, dass in Ihrem Umfeld etwas grundlegend falsch läuft. Können Sie Ihre Frage mit Details darüber aktualisieren, welche Distribution Sie verwenden, welche Kernelversion und welche Docker-Version?

Wie kann ich feststellen, welche Schnittstellen mit vorhandenen Containern verknüpft sind, und wie kann ich zusätzliche Schnittstellen entfernen, die mit entfernten Contrainern verknüpft wurden?

In Bezug auf das manuelle Löschen von veth Schnittstellen:A veth Schnittstelle ist keine Brücke, also können Sie natürlich keine mit brctl löschen .

Zum Löschen eines veth Schnittstelle:

# ip link delete <ifname>

Das Erkennen "leerer" Schnittstellen ist ein heikleres Problem, denn wenn Sie sich nur den Datenverkehr ansehen, können Sie versehentlich etwas löschen, das noch verwendet wird, aber einfach nicht viel Aktivität verzeichnet.

Ich denke, wonach Sie eigentlich suchen möchten, ist veth Schnittstellen, deren Peer auch ist im globalen Netzwerknamensraum sichtbar. Sie können den Peer von veth finden Schnittstelle mit diesen Anweisungen, und dann wäre es einfach zu sehen, ob diese Schnittstelle sichtbar ist, und dann das eine oder andere zu löschen (Löschen eines veth Schnittstelle wird auch ihren Peer entfernen).


Linux
  1. So löschen Sie Speicherpuffer und Cache in Linux

  2. So erstellen und löschen Sie Benutzergruppen in Linux

  3. Wie installiere ich Python unter Ubuntu 20.04 und 18.04?

  4. Wie ändert man die Größe von Partitionen und Dateisystemen darauf?

  5. So finden und löschen Sie leere Verzeichnisse und Dateien in Unix

So finden und löschen Sie defekte Symlinks in Linux

So finden und löschen Sie leere Verzeichnisse in Linux

So finden Sie doppelte Dateien in Linux und entfernen sie

Wie man Git Branches erstellt, umbenennt und löscht

Farbschemata in Vim:Wie man sie ändert und verwendet

So löschen Sie Dateien und Verzeichnisse mit der Linux-Befehlszeile