Gemäß der Dokumentation der Docker Compose -Zusammenstellungsdatei :
depends_on
- Expressabhängigkeit zwischen Diensten.links
- Verknüpfen Sie Container in einem anderen Dienst und drücken Sie die Abhängigkeit zwischen Diensten auf dieselbe Weise aus wie abhängige_on .
Ich verstehe den Zweck der Verknüpfung mit anderen Containern nicht, daher scheint mir der Unterschied zwischen zwei Optionen immer noch recht schwierig zu sein.
Es wäre viel einfacher, wenn es ein Beispiel gäbe, aber ich kann keines finden.
Ich habe festgestellt, dass Container B in der Hülle von Container A "pingbar" ist, wenn ich Container B mit Container A verbinde.
Ich bin ping B
in Container A gelaufen bash
und habe ein Ergebnis wie dieses erhalten (nur als Referenz, Bild aus dem Internet)
docker
docker-compose
dockerfile
itsjef
quelle
quelle
--link
Flag ist jetzt eine veraltete Legacy-Funktion von Docker. In der Dokumentation wird vorgeschlagen, dass Docker: Legacy-Container-Links möglicherweise entfernt werden . Es wird empfohlen, die Docker-Netzwerkfunktion oder die Docker-Erstellungsmethode nicht zu verwenden . Ich dachte, dies wäre für jeden hier hilfreich, der etwas über diese Funktion erfährt.Antworten:
Der Beitrag muss aktualisiert werden, nachdem die
links
Option veraltet ist.Grundsätzlich wird
links
es nicht mehr benötigt, da sein Hauptzweck, Container durch Hinzufügen von Umgebungsvariablen für andere erreichbar zu machen, implizit in enthalten istnetwork
. Wenn Container im selben Netzwerk platziert werden, sind sie unter Verwendung ihres Containernamens und eines anderen Alias als Host für einander erreichbar.Für
docker run
,--link
veraltet auch und sollte von einem benutzerdefinierten Netzwerk ersetzt werden.depends_on
drückt die Startreihenfolge (und implizit die Bildabrufreihenfolge) aus, was ein guter Nebeneffekt von warlinks
.quelle
Diese Antwort gilt für Docker-Compose Version 2 und funktioniert auch für Version 3
Sie können weiterhin auf die Daten zugreifen, wenn Sie abhängige_on verwenden.
Wenn Sie sich die Docker-Dokumente Docker Compose und Django ansehen , können Sie weiterhin wie folgt auf die Datenbank zugreifen:
Was ist der Unterschied zwischen Links und Depends_on?
Links:
Wenn Sie einen Container für eine Datenbank erstellen, zum Beispiel:
Und Sie können finden
Dies bedeutet, dass Sie die Datenbank von Ihrem lokalen Host-Port 32777 (3306 im Container) aus verbinden können. Dieser Port ändert sich jedoch jedes Mal, wenn Sie den Container neu starten oder entfernen. Sie können also Links verwenden, um sicherzustellen, dass Sie immer eine Verbindung zur Datenbank herstellen und nicht wissen müssen, um welchen Port es sich handelt.
kommt drauf an:
Ich habe einen schönen Blog von Giorgio Ferraris Docker-compose.yml gefunden: von V1 bis V2
Und
Aktualisieren
kommt drauf an
Expressabhängigkeit zwischen Diensten, die zwei Auswirkungen hat:
docker-compose up
startet Dienste in Abhängigkeitsreihenfolge. Im folgenden Beispiel werden db und redis vor dem Web gestartet.docker-compose up SERVICE
schließt automatisch die Abhängigkeiten von SERVICE ein. Im folgenden Beispiel erstellt und startet Docker-Compose-Up-Web auch DB und Redis.Einfaches Beispiel:
quelle
https://docs.docker.com/compose/compose-file/compose-versioning/
docker run
hier meines Erachtens völlig irrelevant. So wird der Container sowieso nicht ausgeführt. Was vermisse ich?docker run
Beispiel möchte ich darauf hinweisen, warum wir abhängige_on oder Links verwenden müssen, anstatt eine Portnummer fest zu codieren. Nur weil sie sich jedes Mal ändert, wenn Sie sie nicht angeben. Ich denke, dies wird es den Leuten ermöglichen, mehr über Abhängigkeiten oder Links zu verstehen.[Update Sep 2016]: Diese Antwort war für die Docker-Erstellungsdatei v1 vorgesehen (wie in der folgenden Beispiel-Erstellungsdatei gezeigt). Für v2 siehe die andere Antwort von @Windsooon.
[Ursprüngliche Antwort]:
Es ist ziemlich klar in der Dokumentation.
depends_on
entscheidet über die Abhängigkeit und die Reihenfolge der Containererstellung undlinks
tut dies nicht nur, sondern auchAngenommen, die folgende
docker-compose.yml
Datei:Mit
links
kann der Codeweb
darin auf die Datenbank zugreifendb:5432
, vorausgesetzt, Port 5432 ist imdb
Image verfügbar . Wenndepends_on
verwendet würde, wäre dies nicht möglich, aber die Startreihenfolge der Container wäre korrekt.quelle
links
oderdepends_on
oder einer von ihnen ist in Ordnung? Meine aktuellendocker-compose.yml
Verwendungendepends_on
und Dinge scheinen gut zu funktionieren. :)name:port
danndepends_on
ist ok.db
in denweb
verwendeten Datenbanken zugreifen.