Ich brauche Hilfe, um meine Netzwerkprotokolle aufgrund von docker-compose
networking zu verstehen.
Ich bin in eine VM versetzt worden, und ich habe zwei Projekte mit docker-compose. Der erste wird einfach mit docker-compose up
gestartet. Wenn ich versuche, den zweiten zu starten, friert meine SSH-Sitzung ein und ich kann nicht mehr in die VM wechseln. Nach viel Versuch und Irrtum und nachdem ich dies gelesen habe, habe ich versucht Fügen Sie an die Datei docker-compose.yml
meines zweiten Projekts Folgendes an:
Dabei ist ffamfe_default
der Name des Netzwerks, das von docker-compose up
des ersten Projekts erstellt wurde. Damit versetzt mich docker-compose up
im 2. Projekt nicht aus der ssh-Sitzung heraus.
Ich habe die Logs in /var/log/*.log
getailt, und hier ist die Ausgabe mit der Abschnitt Netzwerke in der docker-compose.yml
-Datei (ohne das Timestamp-Präfix: Jan 19 09:13:42 hostname kernel: [420096.305357]
):
und hier ist die Ausgabe ohne der Abschnitt networks
(d. h. wenn ich aus der ssh-Sitzung rausgeschmissen werde):
Ich verstehe nicht wirklich, wie man diese Logs liest.
Hier ist auch mein ifconfig
.
Kann jemand mir helfen, die Protokolle zu lesen und herauszufinden, was das Problem ist?
Ich habe schließlich ein docker network ls
ausgeführt. Die Ausgabe war eine Liste von mehr als 15 Netzwerken, die sehr alt waren. Ich habe ein docker ps
ausgeführt, um sicherzustellen, dass nichts mit diesen Netzwerken verbunden war. Ein Container lief tatsächlich noch (redis) und befand sich in einem Netzwerk namens bridge
. Ich habe den Container angehalten. Dann ging ich durch alle Netzwerke mit docker network rm <network name>
, bis mir 4 Netzwerke blieben: Bridge, Host, None und das einzige Netzwerk, das noch funktionierte. Dann könnte ich wie gewohnt wieder neue Netzwerke mit docker-compose up
starten
br- xxxxxxx sind die Bridge-Schnittstellen von Docker und veth xxxxxxx sind die virtuellen Schnittstellen Ihrer Container, Docker verwendet diese veth-Schnittstellen, aber Sie interagieren nicht direkt mit ihm Sie verwenden eine IPv6-Adresse und haben kein IPv4. Docker kann keine NAT-Schnittstellen erstellen, es kann nur Bridge und Veth mit IPv6 für Container erstellen. Sie können Ihre Bridge mit jeder physischen oder virtuellen Schnittstelle Ihres Hosts verknüpfen.
So funktioniert es:
eth0 (Ihre Schnittstelle oder V-Schnittstelle, wenn Sie möchten) ↔ br xxxxx (Andockbrücke) ↔ veth xxxxx (v-Schnittstelle Ihres Containers)
Es ist alles, was ich sagen kann, ich bin mir nicht sicher, ob jemand anders antworten wird, es gibt nicht viele Docker-Experten, also gebe ich Ihnen alle Informationen, die ich kann, um Ihre Logs zu verstehen.
Tags und Links ssh networking docker-compose