So verwenden Sie einen Remote Docker-Server zur Beschleunigung Ihres Workflows

Einführung

Das Erstellen von CPU-intensiven Images und Binärdateien ist ein sehr langsamer und zeitaufwändiger Prozess, der Ihren Laptop manchmal in eine Raumheizung verwandeln kann. Das Verschieben von Docker-Bildern über eine langsame Verbindung dauert ebenfalls lange. Zum Glück gibt es eine einfache Lösung für diese Probleme. Mit Docker können Sie all diese Aufgaben auf einen Remote-Server auslagern, damit Ihr lokaler Computer diese harte Arbeit nicht erledigen muss.

Diese Funktion wurde in Docker 18.09 eingeführt. Es bietet Unterstützung für die Remote-Verbindung zu einem Docker-Host über SSH. Auf dem Client ist nur sehr wenig Konfiguration erforderlich, und auf einem Remotecomputer ist nur ein regulärer Docker-Server ohne spezielle Konfiguration erforderlich. Vor Docker 18.09 mussten Sie mit Docker Machine einen Remote-Docker-Server erstellen und anschließend die lokale Docker-Umgebung für die Verwendung konfigurieren. Diese neue Methode beseitigt diese zusätzliche Komplexität.

In diesem Lernprogramm erstellen Sie ein Droplet zum Hosten des Remote-Docker-Servers und konfigurieren den Befehldocker auf Ihrem lokalen Computer, um ihn zu verwenden.

Voraussetzungen

Um diesem Tutorial zu folgen, benötigen Sie:

  • Ein DigitalOcean-Konto. Sie könnencreate an account, wenn Sie noch keine haben.

  • Docker ist auf Ihrem lokalen Computer oder Entwicklungsserver installiert. Wenn Sie mit Ubuntu 18.04 arbeiten, befolgen Sie die Schritte 1 und 2 vonHow To Install and Use Docker on Ubuntu 18.04. Andernfalls befolgen Sie dieofficial documentation, um Informationen zur Installation auf anderen Betriebssystemen zu erhalten. Stellen Sie sicher, dass Sie Ihren Nicht-Root-Benutzer zur Gruppedockerhinzufügen, wie in Schritt 2 des verknüpften Lernprogramms beschrieben.

[[Schritt-1 -–- Erstellen des Docker-Hosts]] == Schritt 1 - Erstellen des Docker-Hosts

Drehen Sie zunächst ein Droplet mit einer angemessenen Rechenleistung auf. Die CPU-optimierten Pläne sind perfekt für diesen Zweck, aber Standardpläne funktionieren genauso gut. Wenn Sie ressourcenintensive Programme kompilieren, bieten die CPU-optimierten Pläne dedizierte CPU-Kerne, die schnellere Builds ermöglichen. Andernfalls bieten die Standardpläne ein ausgewogeneres CPU-RAM-Verhältnis.

DasDocker One-click image kümmert sich für uns um das gesamte Setup. Follow this link, um mit Docker über das Bedienfeld ein CPU-optimiertes Droplet mit 16 GB / 8 vCPU zu erstellen.

Alternativ können Siedoctl verwenden, um das Droplet über Ihre lokale Befehlszeile zu erstellen. Befolgen Sie zur Installation die Anweisungen indoctl README file on GitHub.

Mit dem folgenden Befehl wird ein neues, CPU-optimiertes Droplet mit 16 GB / 8 VCPU in der FRA1-Region basierend auf dem Docker-One-Click-Image erstellt:

doctl compute droplet create docker-host \
    --image docker-18-04 \
    --region fra1 \
    --size c-8 \
    --wait \
    --ssh-keys $(doctl compute ssh-key list --format ID --no-header | sed 's/$/,/' | tr -d '\n' | sed 's/,$//')

Der Befehldoctl verwendet den Wertssh-keys, um anzugeben, welche SSH-Schlüssel auf Ihr neues Droplet angewendet werden sollen. Wir verwenden eine Unterschale, umdoctl compute ssh-key-list aufzurufen, um die mit Ihrem DigitalOcean-Konto verknüpften SSH-Schlüssel abzurufen, und analysieren dann die Ergebnisse mit den Befehlensed undtr, um die Daten im richtigen Format zu formatieren. Dieser Befehl enthält alle SSH-Schlüssel Ihres Kontos. Sie können den hervorgehobenen Unterbefehl jedoch durch den Fingerabdruck jedes Schlüssels ersetzen, den Sie in Ihrem Konto haben.

Sobald das Droplet erstellt ist, sehen Sie unter anderem seine IP-Adresse:

OutputID           Name           Public IPv4        Private IPv4    Public IPv6    Memory    VCPUs    Disk    Region    Image                                 Status    Tags    Features    Volumes
148681562    docker-host    your_server_ip                                    16384     8        100     fra1      Ubuntu Docker 5:18.09.6~3 on 18.04    active

Weitere Informationen zur Verwendung des Befehlsdoctl finden Sie im LernprogrammHow To Use doctl, the Official DigitalOcean Command-Line Client.

Wenn das Droplet erstellt wird, steht Ihnen ein Docker-Server zur Verfügung. Erstellen Sie aus Sicherheitsgründen einen Linux-Benutzer, der anstelle vonroot verwendet werden soll.

Stellen Sie zunächst mit SSH alsroot-Benutzer eine Verbindung zum Droplet her:

ssh root@your_server_ip

Sobald die Verbindung hergestellt ist, fügen Sie einen neuen Benutzer hinzu. Dieser Befehl fügt einen mit dem Namensammy hinzu:

adduser sammy

Fügen Sie dann den Benutzer zur Gruppedockerhinzu, um ihm die Berechtigung zum Ausführen von Befehlen auf dem Docker-Host zu erteilen.

sudo usermod -aG docker sammy

Beenden Sie den Remote-Server schließlich, indem Sieexit eingeben.

Nachdem der Server bereit ist, konfigurieren wir den lokalen Befehldockerfür die Verwendung.

[[Schritt-2 - Konfigurieren des Dockers für die Verwendung des Remote-Hosts]] == Schritt 2 - Konfigurieren des Dockers für die Verwendung des Remote-Hosts

Um den Remote-Host als Docker-Host anstelle Ihres lokalen Computers zu verwenden, legen Sie die UmgebungsvariableDOCKER_HOSTo fest, dass sie auf den Remote-Host verweist. Diese Variable weist den Docker CLI-Client an, eine Verbindung zum Remote-Server herzustellen.

export DOCKER_HOST=ssh://sammy@your_server_ip

Jetzt wird jeder Docker-Befehl, den Sie ausführen, auf dem Droplet ausgeführt. Wenn Sie beispielsweise einen Webserver-Container starten und einen Port verfügbar machen, wird er auf dem Droplet ausgeführt und ist über den Port zugänglich, den Sie auf der IP-Adresse des Droplets verfügbar gemacht haben.

Führen Siedocker info aus, um zu überprüfen, ob Sie als Docker-Host auf das Droplet zugreifen.

docker info

Der Hostname Ihres Droplets wird im FeldNamewie folgt aufgelistet:

Output…
Name: docker-host
…

Beachten Sie, dass beim Ausführen eines Befehlsdocker build der Erstellungskontext (alle Dateien und Ordner, auf die überDockerfile zugegriffen werden kann) an den Host gesendet und anschließend der Erstellungsprozess ausgeführt wird. Abhängig von der Größe des Erstellungskontexts und der Anzahl der Dateien kann es im Vergleich zum Erstellen des Abbilds auf einem lokalen Computer länger dauern. Eine Lösung wäre, ein neues Verzeichnis für das Docker-Image zu erstellen und nur die Dateien zu kopieren oder zu verknüpfen, die im Image verwendet werden, damit keine nicht benötigten Dateien versehentlich hochgeladen werden.

Sobald Sie die VariableDOCKER_HOST mitexport festgelegt haben, bleibt ihr Wert für die Dauer der Shell-Sitzung erhalten. Wenn Sie Ihren lokalen Docker-Server erneut verwenden müssen, können Sie die Variable mit dem folgenden Befehl löschen:

unset DOCKER_HOST

Fazit

Sie haben einen Remote-Docker-Host erstellt und eine lokale Verbindung hergestellt. Wenn der Akku Ihres Laptops das nächste Mal zur Neige geht oder Sie ein starkes Docker-Image erstellen müssen, verwenden Sie Ihren glänzenden Remote-Docker-Server anstelle Ihres lokalen Computers.