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:
-
Das Starten eines einzelnen Containers sollte die Anzahl von
veth
nicht erhöhen Schnittstellen auf Ihrem System um 2, denn wenn Docker eineveth
erstellt -Paar ist ein Ende des Paares im Container-Namespace isoliert und für den Host nicht sichtbar. -
Anscheinend können Sie keinen Container starten:
Error response from daemon: Cannot start container ...
-
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).