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 Gruppe
docker
hinzufü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 Befehldocker
fü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_HOST
o 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 FeldName
wie 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.
Möglicherweise möchten Sie auchhow to optimize Docker images for production oderhow to optimize them specifically for Kubernetes lernen.