GNU/Linux >> LINUX-Kenntnisse >  >> Panels >> Docker

Wie Sie mit Docker-Kontexten mit mehreren Hosts arbeiten können

Kontexte in der Docker-CLI bieten einen optimierten Mechanismus für die Interaktion mit mehreren Docker-Endpunkten. Sie können Kontexte für jeden Ihrer Hosts einrichten und spontan zwischen ihnen wechseln.

Wenn ein Kontext aktiv ist, leitet Docker alle Ihre Befehle an diesen Host weiter. Wenn Sie hauptsächlich eine lokale Docker-Installation verwenden, aber manchmal Container in der Produktion starten müssen, sind Docker-Kontexte eine Option, die Ihnen zur Verfügung steht.

Jeder gültige Docker-Endpunkt kann in einen Kontext umgewandelt werden. Sie können reguläre Docker Engine-Installationen, Docker Swarm-Cluster und Kubernetes-Cluster in der Cloud vernetzen. Jeder gespeicherte Kontext enthält alle Verbindungsinformationen für den referenzierten Host.

Einen Kontext erstellen

Kontexte werden mit dem docker context verwaltet Befehl. Sie erstellen neue Kontexte mit docker context create . Sie müssen einen Namen für Ihren Kontext sowie seine Endpunktkonfiguration angeben.

So erstellen Sie einen Kontext, der eine Verbindung zu einem Docker-Socket herstellt, der über TCP auf einem Remote-Host bereitgestellt wird:

docker context create remote-host --docker host=tcp:///my-remote-host:2735

Kontexte verwenden Docker Swarm als Standard-Container-Orchestrator. Sie können dies explizit mit einem Flag setzen:

docker context create remote-host 
    --default-stack-orchestrator=swarm 
    --docker host=tcp:///my-remote-host:2735

Um eine Verbindung zu Kubernetes herzustellen, ändern Sie den Orchestratortyp. Sie müssen auch --kubernetes hinzufügen -Flag und geben Sie den Pfad zu einer Kubernetes-Konfigurationsdatei an:

docker context create kubernetes-host 
    --default-stack-orchestrator=kubernetes 
    --kubernetes config-file=/home/username/.kube/config 
    --docker host=unix:///var/run/docker.sock

Kontexte auswählen

Der aktive Kontext wird mit docker context use umgeschaltet . Übergeben Sie den Namen des Kontexts, den Sie aktivieren möchten.

docker context use remote-host

Alle nachfolgenden CLI-Befehle werden unter Verwendung des durch den neuen Kontext angegebenen Endpunkts ausgeführt. Der aktive Kontext bleibt automatisch bestehen, bis Sie ihn ändern. Um zu einem anderen Kontext zu wechseln, führen Sie docker context use aus wieder. Sie können mit Ihrem lokalen Docker-Socket zum Standardkontext zurückkehren, indem Sie default übergeben als Kontextname.

Sie können den ausgewählten Kontext jederzeit überschreiben, indem Sie den --context hinzufügen Flag für jeden Docker-Befehl:

docker run ubuntu:latest --context remote-host

Der DOCKER_CONTEXT Die Umgebungsvariable fungiert auch als Alternative zu --context Flagge. Beide Mechanismen ermöglichen einen vorübergehenden Wechsel zu einem anderen Kontext, ohne dass Sie eine docker context use ausführen und rückgängig machen müssen Befehl.

Mit dem DOCKER_HOST Die Umgebungsvariable überschreibt auch den aktiven Kontext. Diese Variable zwingt Docker, einen bestimmten Daemon-Endpunkt anstelle des vom Kontext bereitgestellten zu verwenden.

Sie können den aktiven Kontext überprüfen, indem Sie docker context ls ausführen . Dieser Befehl listet alle in Ihrer CLI-Konfiguration verfügbaren Kontexte auf. Der aktive Kontext wird mit einem Sternchen hervorgehoben. Um einen Kontext zu löschen, führen Sie docker context rm aus , die den Kontextnamen bereitstellt. Es ist nicht möglich, den default zu löschen Kontext.

Kontexte zwischen Maschinen synchronisieren

Kontextdateien werden im Konfigurationsverzeichnis Ihrer Docker-CLI gespeichert. Dies ist normalerweise $HOME/.docker auf Linux. Ihre Kontexte finden Sie in den contexts Unterverzeichnis. Jeder Kontext erhält seinen eigenen Ordner mit einem eindeutigen Hash. Darin finden Sie eine meta.json Datei, die den Kontext beschreibt. Nur erstellte Kontexte haben Dateien, die auf dem Datenträger gespeichert sind. Der default Kontext erbt die Einstellungen von Ihrer Docker-Daemon-Konfiguration.

Wenn Sie die Kontextkonfiguration synchronisieren möchten, können Sie die contexts sichern Ordner, um ihn auf einen anderen Computer zu verschieben. Sie könnten eine Rsync-Übertragung oder ein Git-Repository verwenden, um regelmäßige Updates zu vereinfachen. Abhängig von Ihren Anforderungen kann es auch eine Option sein, den Ordner mit einer Netzwerkfreigabe zu verknüpfen.

Mit Docker können Sie Kontexte auch über die CLI exportieren und importieren:

docker context export my-context

Dadurch wird ein my-context.dockercontext erstellt Datei in Ihrem Arbeitsverzeichnis. Die Datei enthält die meta.json Inhalte sowie einige zusätzliche Informationen, wie z. B. den Namen des Kontexts. Übertragen Sie diese Datei auf einen anderen Computer und führen Sie docker context import my-context.dockercontext aus um die Kontextkonfiguration zu laden.

Alternativ können Sie eine eigenständige Kubernetes-Konfigurationsdatei für Kubernetes-Kontexte exportieren:

docker context export kubernetes-context --kubeconfig

Dadurch wird eine reguläre „kubeconfig“-Datei erstellt, die mit Kubernetes-Ökosystem-Tools wie kubectl kompatibel ist . Die Möglichkeit, eine kubeconfig-Datei aus einem Docker-Kontext abzurufen, verbessert die Interoperabilität der Toolchain. Nichts in der Datei ist spezifisch für die Docker-CLI.

Wenn Sie einen Kontext bearbeiten müssen, verwenden Sie die docker context update Befehl. Dies akzeptiert die gleichen Flags wie docker context create . Wenn Sie Massenaktualisierungen vornehmen, können Sie meta.json bearbeiten Dateien, um Ihre Kontexte direkt zu manipulieren. Sie können die meta.json eines Kontexts überprüfen Datei von der CLI mit docker context inspect my-context .

Schlussfolgerung

Docker-Kontexte sind nützlich, wenn Sie Container in mehreren unabhängigen Umgebungen bereitstellen müssen. Sie können Kontexte für Ihren lokalen Docker-Socket, einen gemeinsam genutzten Team-Staging-Server und Ihren Kubernetes-Produktionsserver einrichten.

Docker verfügt über eine integrierte Unterstützung für die Container-Clouds von Microsoft Azure und Amazon ECS, die auch als Kontexte hinzugefügt werden können. Die Anzahl der Kontexte, die Sie erstellen können, ist unbegrenzt, sodass Sie beim Wechseln zwischen Ihren Hosts vielseitig einsetzbar sind.

Das wohl größte funktionale Problem mit Kontexten ist die Möglichkeit, versehentlich einen Befehl im falschen Kontext auszuführen. Falls Sie vergessen haben, dass Sie sich in Ihrer production befinden Kontext, Ausführen von docker rm database-container verheerende Folgen haben könnte. Führen Sie im Zweifelsfall docker context ls aus Überprüfen Sie zuerst, was Sie ausgewählt haben.


Docker
  1. So installieren Sie WordPress mit Docker, eine leicht verständliche Anleitung

  2. So verschieben Sie Docker-Images zwischen Hosts

  3. So installieren Sie Jenkins mit Docker

  4. So stellen Sie Microservices mit Docker bereit

  5. So stellen Sie Apps mit Rancher bereit

So ersetzen Sie Docker durch Podman auf einem Mac

Was ist Docker? Wie funktioniert es?

Was ist Docker Compose und wie wird es verwendet?

So kopieren Sie Dateien mit Docker cp in Ihren Docker-Container

So erstellen Sie ein benutzerdefiniertes Docker-Image mit Dockerfile

So hosten Sie mehrere WordPress-Sites auf demselben Server mit Docker