Docker: Erste Schritte

Wie man mit Stackhero für Docker beginnt

👋 Willkommen in der Stackhero-Dokumentation!

Stackhero bietet eine einsatzbereite Docker Cloud CaaS (Containers as a Service) Lösung, die zahlreiche Vorteile bietet, darunter:

  • Einfache Bereitstellung Ihrer Container in der Produktion mit nur einem docker-compose up.
  • Anpassbarer Domainname gesichert mit HTTPS (zum Beispiel, https://api.ihre-firma.com, https://www.ihre-firma.com, https://backoffice.ihre-firma.com).
  • Optimale Leistung und robuste Sicherheit durch eine private und dedizierte VM.
  • Mühelose Updates mit nur einem Klick.

Sparen Sie Zeit und vereinfachen Sie Ihr Leben: Es dauert nur 5 Minuten, um die Docker CaaS Cloud Hosting Lösung von Stackhero auszuprobieren und Ihre Container in der Produktion bereitzustellen!

Docker CLI sollte auf Ihrem Computer installiert sein. Falls Sie es noch nicht installiert haben, können Sie es hier herunterladen: https://www.docker.com/products/docker-desktop/.

Mit Stackhero für Docker können Sie sich von Ihrem Computer aus remote mit Ihrem Docker-Server verbinden, genau wie bei der lokalen Arbeit. Diese Einrichtung ermöglicht es Ihnen, Ihren gewohnten Arbeitsablauf beizubehalten und bietet eine robuste Möglichkeit, Ihre Container in der Produktion zu verwalten.

Um dies zu erreichen, werden Docker "Kontexte" verwendet. Docker-Kontexte ermöglichen es Ihnen, die Docker CLI auf Ihrem Computer zu verwenden und anzugeben, wo die Befehle ausgeführt werden sollen: auf Ihrem lokalen Docker-Daemon (wie gewohnt) oder auf Ihrer Stackhero für Docker-Instanz.

Um sich remote mit Ihrer Stackhero für Docker-Instanz zu verbinden, müssen Sie zunächst deren Zertifikate installieren. Diese Zertifikate gewährleisten eine sichere Authentifizierung und Verschlüsselung zwischen Ihrem Computer und Ihrer Stackhero für Docker-Instanz.

Auf Ihrem Computer können Sie den folgenden Befehl verwenden:

# HOST ist der Domainname Ihrer Stackhero für Docker-Instanz (<XXXXXX>.stackhero-network.com).
# SERVICE_ID ist Ihre Stackhero-Service-ID.
# CERTIFICATES_PASSWORD ist das in Ihrer Stackhero für Docker-Konfiguration definierte Passwort.
(export HOST="<XXXXXX>.stackhero-network.com"
export SERVICE_ID="<SERVICE_ID>"
export CERTIFICATES_PASSWORD="<CERTIFICATES_PASSWORD>"

cd /tmp/ \
  && curl -o certificates.tar https://docker:$CERTIFICATES_PASSWORD@$HOST/stackhero/docker/certificates.tar \
  && tar -xf certificates.tar \
  && (docker context rm -f $HOST 2> /dev/null || true) \
  && docker context create $HOST \
    --description "$SERVICE_ID ($HOST)" \
    --docker "host=tcp://$HOST:2376,ca=ca.pem,cert=cert.pem,key=key.pem")

Sie haben nun einen Docker-Kontext erstellt, der nach Ihrem Service-Domainnamen benannt ist. Um alle Ihre Kontexte anzuzeigen, können Sie den Befehl docker context ls ausführen.

Wenn Sie Ihre Service-Domain aktualisieren, ändern sich die Zertifikate und Sie müssen sie neu installieren.

Derzeit, wenn Sie Ihre Container mit dem Befehl docker ps auflisten, verwendet Ihre Docker CLI Ihren lokalen Docker-Daemon und zeigt die auf Ihrem Computer laufenden Container an.

Zum Beispiel können Sie diesen Befehl ausführen, um die öffentliche IP Ihres Docker-Daemons zu erhalten: docker run --rm alpine wget -q -O - ifconfig.me. Da der Container auf Ihrem Computer läuft, sehen Sie als Antwort die IP Ihres Internet-Routers.

Lassen Sie uns den Docker-Kontext ändern, um Ihre Stackhero für Docker-Instanz zu verwenden. Führen Sie einfach den Befehl docker context use <XXXXXX>.stackhero-network.com aus. Jetzt werden Docker-Befehle, die auf Ihrem Computer initiiert werden, sicher auf Ihrem Remote-Docker-Daemon ausgeführt.

Führen Sie denselben Befehl erneut aus, um die öffentliche IP Ihres Docker-Daemons abzurufen: docker run --rm alpine wget -q -O - ifconfig.me. Sie sollten nun die öffentliche IP Ihrer Stackhero für Docker-Instanz sehen, was bestätigt, dass Ihr Container auf Ihrem Server und nicht mehr auf Ihrem Computer läuft.

Um wieder Ihren lokalen Docker-Daemon zu verwenden, wechseln Sie einfach Ihren Docker-Kontext zurück auf "default": docker context use default.

Wenn Sie ein Volume auf einem Remote-Container mounten, sind die zugänglichen Daten die auf dem Remote-Server und nicht die auf Ihrem Computer. Daher wird ein Befehl wie docker run -it -v ${PWD}:/mnt alpine nicht das Verzeichnis von Ihrem Computer mounten, wie Sie es vielleicht erwarten.

Wie die Docker CLI verwendet die Docker-compose CLI Ihren aktuellen Kontext. Daher wird, sobald Sie zu Ihrer Remote-Instanz mit docker context use <XXXXXX>.stackhero-network.com gewechselt haben, jeder Docker-compose-Befehl ebenfalls auf Ihrer Remote-Instanz ausgeführt.

Die Verwendung des Befehls docker context ist effektiv, aber möglicherweise nicht der beste Ansatz bei der Verwaltung von Kontexten in Ihren Skripten oder Makefiles. In solchen Fällen sollten Sie die Umgebungsvariable DOCKER_CONTEXT in Betracht ziehen, die in unseren erweiterten Dokumentationsseiten detailliert beschrieben ist.