Einführung
Marsh House liefert A river remembered, River edition 2, an eine von Registries isolierte empfangende Engine. Ein Übergabepaket existiert bereits, speichert aber nur das Web-Image. Repariere es, lade beide Images auf den Empfänger und nutze die vollständige Ausstellung, nachdem ihre Quelle gestoppt wurde.
Dieses unabhängige Lab bereitet eigene Quellen, Dateien und einen Empfänger vor; es benötigt nichts aus der vorherigen VM. Du solltest Paketaufbau, die bereitgestellten Compose-Beziehungen und Tags im Vergleich zu Image-IDs aus Pack the Exhibition oder gleichwertig kennen. Docker und Compose sind vorbereitet. Du lernst explizite Kontexte, empfangsseitiges Laden und Offline-Start.
Nutze Workstation, Source Exhibition und Receiving Exhibition. Die beiden Engines haben getrennte Sockets, containerd-Prozesse und Image-Speicher, teilen aber den Kernel dieser VM; dies ist eine kontrollierte Empfangsgrenze, keine zwei physischen Rechner und keine Zusicherung vollständiger Notfallwiederherstellung. Plane etwa 45 Minuten einschließlich Lesen und gewöhnlicher Fehler ein; dies ist eine Schätzung des Autors.
Die Empfangsgrenze untersuchen
In diesem Schritt unterscheidest du die beiden Engines, bevor du eine davon veränderst. Beginne in Source Exhibition. Öffne Pocket compass und Crossing ledger, lies ihre Datensätze und lade ihre Datenblätter herunter. Beachte River edition 2 auf der Sammlungsseite. Receiving Exhibition zeigt derzeit Exhibition not running mit HTTP 503: Es übernimmt nicht die Quellseite.
Wechsle zu Workstation, das in /home/labex/project/exhibition-handoff startet:
cd /home/labex/project/exhibition-handoff
cat release.json
Die erforderlichen Tags sind field-notes/web:receive und field-notes/api:receive. Das vorbereitete packet enthält die Sammlung und eine Compose-Datei mit relativen Pfaden, aber nur ein Image in images.tar.
Ein Docker-Kontext benennt eine Verbindung zu einem Daemon. Das folgende context create speichert eine Verbindung zum Unix-Socket des Empfängers; es erstellt keine neue Engine und ändert den aktiven Standard nicht. unix:// ist das lokale Socket-Protokoll, und der restliche Pfad gehört ausschließlich zum isolierten Empfänger dieses Kurses:
docker context create receiver --docker host=unix:///opt/labex/dk03/receiver-socket/docker.sock
Falls der Name aus deinem Versuch bereits existiert, untersuche ihn mit docker context inspect receiver, statt den globalen Kontext zu wechseln oder einen weiteren Empfänger zu erstellen. Nutze bei jeder Operation --context, damit ihr Ziel eindeutig bleibt.
docker --context default info --format '{{.ID}}'
docker --context receiver info --format '{{.ID}}'
docker --context receiver image ls
Die Engine-IDs unterscheiden sich. Der Empfänger enthält ein Python-Basis-Image für seinen unabhängigen Referenzdienst receiving-desk, aber keinen der erforderlichen Ausstellungs-Tags. Erhalte diesen Dienst und die empfangende Engine selbst.
Die empfangende Engine befindet sich im Kurscontainer dk03-receiver. Die nächsten beiden schreibgeschützten Befehle führen über die Quell-Engine Werkzeuge in diesem Container aus. ip route zeigt verbundene Routen ohne Standardroute. wget versucht eine echte Registry-Anfrage; -T 5 begrenzt die Netzwerkwartezeit, -O /dev/null verwirft einen möglichen Antworttext. Dieser Versuch soll mit einem Status ungleich null fehlschlagen, weil dieser Empfangs-Namespace keine Route zur Registry hat:
docker --context default exec dk03-receiver ip route
docker --context default exec dk03-receiver wget -T 5 -O /dev/null https://registry-1.docker.io/v2/
Lies den Verbindungsfehler. Ein Netzwerk-Verbindungsfehler unterscheidet sich von einem HTTP 404 oder 503 der Anwendung. Ergänze keine Route, aktiviere keinen Registry-Zugriff und mounte nicht den Docker-Socket der Quelle, um ihn zu umgehen: Das Paket muss die Übergabe vollständig abdecken.
Das Paket reparieren, kopieren und laden
In diesem Schritt bringst du beide benötigten Images und die lokale Sammlung in den Empfangsordner. Beginne in Workstation. Das frühere Paket-Lab erklärte image save, cp und relative Compose-Pfade. Ersetze das unvollständige Archiv durch das genaue Paar aus dem Versionsdatensatz dieses Labs:
docker --context default image save -o packet/images.tar field-notes/web:receive field-notes/api:receive
cat packet/compose.yaml
Bestätige, dass der Mount ./collection:/collection:ro lautet und die Dienst-Tags auf :receive enden. Der relative Pfad wird neben der empfangenen Konfiguration aufgelöst. Kopiere das vollständige Paket, nicht nur sein Image-Archiv:
cp -r packet /home/labex/project/receiving/packet
ls /home/labex/project/receiving/packet
Beim ersten Versuch existiert dieses Ziel nicht. Wiederholst du deine eigene Kopie, kopiere den Inhalt mit cp -r packet/. /home/labex/project/receiving/packet/, statt ein weiteres packet-Verzeichnis darin zu verschachteln. Das Empfangs-Elternverzeichnis enthält auch desk/, das zum zu erhaltenden Referenzdienst gehört. Entferne oder überschreibe es nicht.
image load -i importiert Image-Konfigurationen, Layer und Tags aus einem gespeicherten Archiv in die ausgewählte Engine:
docker --context receiver image load -i /home/labex/project/receiving/packet/images.tar
docker --context receiver image ls
Nun sollten beide erforderlichen Tags erscheinen. Dieser Empfänger teilte den Image-Speicher der Quell-Engine nicht; einen Tag nur auf der Quelle zu speichern konnte ihn hier nicht verfügbar machen. Erscheint nur ein Tag, kehre zu release.json zurück, repariere das Save-Archiv im Quellpaket und kopiere dessen Inhalt erneut, bevor du wieder lädst.
Den Empfänger ohne seine Quelle öffnen
In diesem Schritt startest du ausschließlich mit empfangsseitigen Dateien und zeigst Unabhängigkeit. Beginne in Workstation. --project-directory legt fest, wo Compose seine relativen Dateien auflöst, -p exhibition benennt nur die Anwendungsressourcen dieses Kurses, up -d startet sie im Hintergrund, --pull never verbietet Registry-Pulls und --no-build verbietet den Bau fehlender Images:
docker --context receiver compose --project-directory /home/labex/project/receiving/packet -p exhibition up -d --pull never --no-build
docker --context receiver compose --project-directory /home/labex/project/receiving/packet -p exhibition ps
Sowohl gallery als auch records sollten laufen. Meldet Compose ein fehlendes Image, repariere und lade das Paket, statt es zu pullen. Zeigt die Seite Collection unavailable, untersuche die Logs des Datensatzdienstes mit demselben Compose-Präfix gefolgt von logs records, vergleiche den empfangenen Sammlungsordner und seinen :ro-Mount und korrigiere und kopiere dann das Paket erneut. Muss ein früherer Teilversuch ersetzt werden, nutze dasselbe Präfix gefolgt von down und wiederhole anschließend den gezeigten Startbefehl. Dies entfernt nur die Anwendungscontainer, nicht den Empfangsschalter oder dessen Engine.
Wechsle zu Receiving Exhibition, lade neu und nutze die vier Objekte, ihre Illustrationen, Details und Datenblattdownloads. Dies ist der empfangende Dienst, keine Kopie der Quellseite.
Wechsle zu Workstation. docker stop fordert einen benannten Container zum Stoppen auf. Stoppe ausschließlich diese beiden Quelldienste und lasse die empfangende Engine und receiving-desk laufen:
docker --context default stop dk03-source-web dk03-source-api
Wechsle zu Source Exhibition und lade neu: Nun sollte Exhibition not running erscheinen. Wechsle zu Receiving Exhibition, lade neu, öffne Pocket compass und Crossing ledger und lade ihre Datenblätter erneut herunter. Der Empfänger muss weiterhin die richtige Ausgabe, alle vier Objekte, jede Illustration und vollständige Downloads bieten. Sein Leser hat keinen Rückgriff auf die Quelle. Auch eine frische Browsersitzung sollte ohne zuvor zwischengespeicherte Seiten funktionieren.
Dies ist die empfangene Sammlung River edition 2, die nach dem Stoppen der Quelle weiterhin verfügbar ist:

Lasse die empfangene Anwendung laufen. Prüfungen beobachten und erhalten diesen laufenden Zustand; eine zusätzliche isolierte Wiederholung lädt dein unverändertes Paket in einen neuen netzwerklosen Speicher, um wiederholbare Lieferung zu prüfen. Keine Prüfung ergänzt für dich Dateien oder Images, die in deiner tatsächlichen Lab-Umgebung fehlen.
Zusammenfassung
Du hast unabhängige Docker-Engines mit expliziten Kontexten adressiert, ein Paket mit zwei Images repariert und es auf den von Registries isolierten Empfänger geladen. Compose startete mit empfangsseitiger Konfiguration und Materialien bei deaktiviertem Pull und Build. Die vollständige Ausstellung funktionierte weiter, nachdem beide Quelldienste gestoppt waren.



