Container-Links
Ein Container-Link gibt einem Workload, dem Nutzer, privaten Zugriff auf einen TCP-Port eines anderen Workloads, des Ziels. Der Nutzer erreicht das Ziel als alias:port; das Ziel benötigt keinen veröffentlichten Port, und nichts anderes wird geöffnet. Nutzer und Ziel können jeweils ein Container, ein Deployment oder ein Compose-Dienst sein, auf demselben Docker Node oder auf verschiedenen.
Verwenden Sie einen Container-Link, wenn eine Anwendung einen internen Dienst eines anderen Workloads aufrufen muss, etwa eine API, eine Warteschlange oder einen Cache, ohne diesen Dienst auf dem Host zu veröffentlichen oder ein Docker-Netzwerk zwischen beiden zu teilen. Verwenden Sie für verwaltete Datenbanken und verwalteten Objektspeicher stattdessen Datenbank-Bindings und Speicherverbindungen: Sie liefern auch Zugangsdaten.
Voraussetzungen
Abschnitt betitelt „Voraussetzungen“- Tarif: Personal oder höher. Bestehende Links funktionieren nach einer Lizenzänderung weiter; das Erstellen eines Links erfordert den aktuellen Tarif. Siehe Tarife und Leistungsumfang.
- Docker-Daemon: Beide Nodes, der des Nutzers und der des Ziels, benötigen den Docker-Daemon 2.11.1 oder neuer. Ein Link, dessen Node einen älteren Daemon ausführt, zeigt update required, bis der Daemon aktualisiert ist.
- Berechtigungen: auf dem Nutzer
docker:containers:edit(docker:compose:managebei einem Compose-Dienst), zusätzlichdocker:containers:environment, wenn der Link Variablen setzt; auf dem Zieldocker:containers:link(docker:compose:managebei einem Compose-Dienst). Der Eigentümer des Ziels vergibtdocker:containers:link, damit andere Workloads es erreichen können, ohne ihnen sonstigen Zugriff zu geben. Siehe die Scope-Referenz.
Einen Link erstellen
Abschnitt betitelt „Einen Link erstellen“- Öffnen Sie den Nutzer: die Registerkarte Environment eines Containers oder Deployments oder die Registerkarte Variables eines Compose-Projekts.
- Wählen Sie unter Links die Option Add link und dann Container. Wählen Sie bei einem Compose-Projekt den nutzenden Service.
- Wählen Sie den Target type und den Ziel-Workload auf einem beliebigen Docker Node sowie den zu öffnenden TCP-Port des Ziels.
- Prüfen Sie den Alias. Er entspricht standardmäßig dem Namen des Ziels und ist der Name, mit dem sich der Nutzer verbindet: Kleinbuchstaben, Ziffern und Bindestriche, eindeutig unter den Links des Nutzers.
- Füllen Sie optional Environment variables für Host, Port oder eine URL (
http://alias:port) aus, zum BeispielAPI_HOST,API_PORToderAPI_URL. Das Setzen von Variablen erstellt den Nutzer einmal neu, damit er mit ihnen startet; ein Link ohne Variablen startet den Nutzer nicht neu. - Speichern Sie und warten Sie, bis der Link ready zeigt, und senden Sie dann eine echte Anfrage vom Nutzer an
alias:port.
Incoming im Block Links des Ziels listet die Workloads auf, die es erreichen. Ein Link wird im Block Links des Nutzers entfernt; das Entfernen verwirft den Alias und entfernt, wenn der Link Variablen gesetzt hat, diese mit einer weiteren Neuerstellung.
API und MCP
Abschnitt betitelt „API und MCP“| Aktion | REST | MCP und Assistent |
|---|---|---|
| Die Links eines Workloads auflisten | GET /api/docker/container-links?nodeId=&type=&resourceId=&direction=outgoing|incoming |
manage_container_link list |
| Einen Link erstellen | POST /api/docker/container-links |
manage_container_link create |
| Einen Link und seine Laufzeit lesen | GET /api/docker/container-links/{id} und /{id}/runtime |
manage_container_link get_runtime |
| Einen Link löschen | DELETE /api/docker/container-links/{id} |
manage_container_link delete |
Ein Workload wird durch seinen Node, seinen Typ (container, deployment oder compose_service) und seine Ressource identifiziert: den Containernamen, die Deployment-ID oder <compose-project-id>:<service-name>. Die Laufzeit zeigt offene Verbindungen, Sitzungen, Durchsatz und abgelehnte Verbindungen, wie bei Datenbank- und Speicherverbindungen.
| Status | Bedeutung | Was zu tun ist |
|---|---|---|
| ready | Der Nutzer erreicht das Ziel. | Nichts. |
| pending | Der Link ist gespeichert; der Nutzer übernimmt ihn bei seinem nächsten Start oder Rollout. | Starten Sie den Nutzer oder schließen Sie seinen Rollout ab. |
| waiting | Das Ziel läuft nicht, oder keine Kopie davon bedient. | Starten Sie das Ziel; der Link bedient dann selbstständig wieder. |
| update required | Der Node des Nutzers oder des Ziels führt einen Docker-Daemon älter als 2.11.1 aus. | Aktualisieren Sie den Docker-Daemon auf diesem Node. |
| error | Der Link konnte nicht eingerichtet werden; die Meldung nennt den Grund. | Beheben Sie die Ursache; Opfield versucht den Link selbstständig erneut. |
Wie der Datenverkehr fließt
Abschnitt betitelt „Wie der Datenverkehr fließt“Jeder Docker Node betreibt einen gemeinsamen Secure-Link-Connector für alle seine Links. Der Nutzer tritt für den Link einem kleinen eigenen privaten Netzwerk bei, und der Connector beantwortet dort den Alias. Verbindungsnetzwerke beziehen ihre Adressen aus einem eigenen Bereich; siehe Gemeinsamer Connector und Verbindungsnetzwerke.
- Derselbe Node: Der Connector leitet jede Verbindung direkt an das Ziel weiter.
- Verschiedene Nodes: Die Verbindung läuft über das Relay zum Node des Ziels, an beiden Enden authentifiziert, wie bei jedem anderen Secure Link.
Ein Link öffnet genau einen Port des Ziels, in eine Richtung: Der Nutzer kann diesen Port erreichen und sonst nichts vom Ziel. Das Ziel kann den Nutzer nicht über den Link erreichen, und andere Workloads können ihn nicht verwenden. Das Verbindungsnetzwerk gehört allein dem Link.
Availability-Ziele
Abschnitt betitelt „Availability-Ziele“Läuft das Ziel unter Workload Availability, folgt der Link den fehlerfreien Kopien:
- jeder Node eines Nutzers bevorzugt eine Kopie auf seinem eigenen Node und verwendet andernfalls eine andere fehlerfreie Kopie;
- wenn Availability eine Kopie als fehlerhaft einstuft, verschiebt der Link seine Verbindungen sofort zu einer fehlerfreien Kopie;
- eine Kopie, die sich erholt, erhält Link-Verkehr erst zurück, nachdem Availability meldet, dass sie ihre Health Checks wieder besteht; eine neu gestartete Kopie, deren Health-Zustand noch nicht bekannt ist, gilt nicht als bestanden;
- ist keine Kopie fehlerfrei, bleibt der Link auf den Kopien, die noch bedienen, wie die Routen von Availability.
Ein Availability-Deployment wird über seinen Router erreicht, der nur die eigenen Ports des Deployments weiterleitet. Der Port des Links muss daher einer der Ports des Deployments sein; andernfalls wird der Link beim Erstellen abgelehnt oder wechselt mit dem Grund in error, wenn sich die Ports des Deployments ändern.
Fehlerbehebung
Abschnitt betitelt „Fehlerbehebung“- Der Nutzer kann den Alias nicht auflösen: Prüfen Sie, dass der Link ready ist und die Anwendung den Alias verwendet, nicht den Containernamen des Ziels.
- Verbindungen werden abgelehnt: Prüfen Sie, dass das Ziel innerhalb seines Containers auf dem Port des Links lauscht und dass der Port des Links der Container-Port ist, nicht ein Host-Port.
- update required: Aktualisieren Sie den Docker-Daemon auf dem Node, den die Meldung nennt; sonst muss sich nichts ändern.
- waiting: Das Ziel ist gestoppt, oder keine Availability-Kopie bedient; starten oder reparieren Sie das Ziel.