In einer Docker-Umgebung verwenden Sie mehrere Images und arbeiten mit vielen Containern. Wenn Sie einen Container von einem Image ausführen, wird diese Version weiterhin ausgeführt, da Docker-Images nicht automatisch aktualisiert werden. Möglicherweise müssen Sie es manuell aktualisieren. Es wird immer empfohlen, einen Container vom neuesten Docker-Image auszuführen.
In diesem Leitfaden zeigen wir Ihnen praktische Beispiele, wie Sie einen laufenden Container ohne Ausfallzeit aktualisieren können.
Voraussetzungen
- Ein frischer Ubuntu 20.04-Server auf der Atlantic.Net Cloud Platform
- Ein auf Ihrem Server konfiguriertes Root-Passwort
Schritt 1 – Atlantic.Net Cloud-Server erstellen
Melden Sie sich zunächst bei Ihrem Atlantic.Net Cloud Server an. Erstellen Sie einen neuen Server und wählen Sie Ubuntu 20.04 als Betriebssystem mit mindestens 2 GB RAM. Stellen Sie über SSH eine Verbindung zu Ihrem Cloud-Server her und melden Sie sich mit den oben auf der Seite hervorgehobenen Anmeldeinformationen an.
Sobald Sie sich bei Ihrem Ubuntu 20.04-Server angemeldet haben, führen Sie den folgenden Befehl aus, um Ihr Basissystem mit den neuesten verfügbaren Paketen zu aktualisieren.
apt-get update -y
Schritt 2 – Docker CE und Docker Compose installieren
Installieren Sie zunächst alle erforderlichen Abhängigkeiten mit dem folgenden Befehl:
apt-get install git apt-transport-https ca-certificates curl software-properties-common -y
Fügen Sie als Nächstes den Docker-GPG-Schlüssel und das Repository mit dem folgenden Befehl hinzu:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable"
Nachdem das Repository hinzugefügt wurde, installieren Sie Docker und Docker Compose mit dem folgenden Befehl:
apt-get install docker-ce docker-compose -y
Sobald beide Pakete installiert sind, können Sie mit dem nächsten Schritt fortfahren.
Schritt 3 – Erstellen Sie eine Docker Compose-Datei
Für die Zwecke dieses Tutorials erstellen wir ein Docker-Netzwerk, ein Volume und eine docker-compose.yml-Datei, um einen Ghost-Container bereitzustellen.
Erstellen Sie zuerst ein Netzwerk namens net und ein Volume namens ghost mit dem folgenden Befehl:
docker network create net docker volume create ghost
Erstellen Sie als Nächstes mit dem folgenden Befehl ein Verzeichnis für das Ghost-Projekt:
mkdir Ghost
Wechseln Sie als Nächstes in das Verzeichnis Ghost und erstellen Sie eine docker-compose.yml-Datei:
cd Ghost nano docker-compose.yml
Fügen Sie die folgenden Zeilen hinzu:
version: '3.5' services: ghost: image: ghost:3.36 volumes: - ghost:/var/lib/ghost/content environment: - VIRTUAL_HOST=ghost.example.com - url=http://ghost.example.com - NODE_ENV=production restart: always networks: - net volumes: ghost: external: true networks: net: external: true
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Die obige Datei lädt das Ghost-Image Version 3.36 herunter und erstellt einen Ghost-Container für die Domäne ghost.example.com.
Schritt 4 – Erstellen Sie einen Ghost-Container
Wechseln Sie nun in das Verzeichnis Ghost und starten Sie den Ghost-Container mit dem folgenden Befehl:
docker-compose up -d
Sie sollten die folgende Ausgabe erhalten:
Pulling ghost (ghost:3.36)... 3.36: Pulling from library/ghost bb79b6b2107f: Pull complete 99ce436c3449: Pull complete f7bdc31da5f5: Pull complete 7a1300b9ff59: Pull complete a495c68fa838: Pull complete 6e362a39ec35: Pull complete b68b4f3c36f7: Pull complete 41f8b02d4a71: Pull complete 3ecc736ea4e5: Pull complete Digest: sha256:595c759980cd22e99037811397012908d89efb799776db222a4be6d4d892917c Status: Downloaded newer image for ghost:3.36 Creating ghost_ghost_1 ... done
Sie können das Ghost-Image mit dem folgenden Befehl überprüfen:
docker images
Ausgabe:
REPOSITORY TAG IMAGE ID CREATED SIZE ghost 3.36 455ce1645479 4 months ago 440MB
Sie können den Ghost-Container auch mit dem folgenden Befehl überprüfen:
docker ps
Ausgabe:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES d4b51b1aafc8 ghost:3.36 "docker-entrypoint.s…" 23 seconds ago Up 20 seconds 2368/tcp ghost_ghost_1
Schritt 5 – Aktualisieren Sie die Docker Compose-Datei
In diesem Abschnitt aktualisieren wir die Docker-Compose-Datei und ändern die Ghost-Version von 3.36 auf 3.37.1:
nano docker-compose.yml
Nehmen Sie die folgenden Änderungen vor:
version: '3.5' services: ghost: image: ghost:3.37.1 volumes: - ghost:/var/lib/ghost/content environment: - VIRTUAL_HOST=ghost.example.com - url=http://ghost.example.com - NODE_ENV=production restart: always networks: - net volumes: ghost: external: true networks: net: external: true
Speichern und schließen Sie die Datei, wenn Sie fertig sind.
Schritt 6 – Starten Sie einen neuen Ghost-Container
Jetzt werden wir die Skalierungsmethode verwenden, um einen neuen Ghost-Container zu erstellen, ohne den älteren Ghost-Container zu beeinflussen. Sie können dies mit dem folgenden Befehl tun:
cd Ghost docker-compose up -d --scale ghost=2 --no-recreate
Sie sollten die folgende Ausgabe erhalten:
Pulling ghost (ghost:3.37.1)... 3.37.1: Pulling from library/ghost bb79b6b2107f: Already exists 99ce436c3449: Already exists 7f4b5e228565: Pull complete de71eab7febf: Pull complete 29961d2eb573: Pull complete 923f84e249ab: Pull complete dfad6f73fc3d: Pull complete b16cf83b3022: Pull complete 387b2254843c: Pull complete Digest: sha256:fad0c2631cbba3d6c61da6fa5ef39da201780f2ae64ce51f3d5ebb412ca2564b Status: Downloaded newer image for ghost:3.37.1 Starting ghost_ghost_1 ... done Creating ghost_ghost_2 ... done
Sie können das neue Ghost-Image mit dem folgenden Befehl überprüfen:
docker images
Ausgabe:
REPOSITORY TAG IMAGE ID CREATED SIZE ghost 3.37.1 c64d108acdfe 3 months ago 439MB ghost 3.36 455ce1645479 4 months ago 440MB
Sie können den neuen Ghost-Container auch mit dem folgenden Befehl überprüfen:
docker ps
Ausgabe:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES c21550f39440 ghost:3.37.1 "docker-entrypoint.s…" 33 seconds ago Up 31 seconds 2368/tcp ghost_ghost_2 d4b51b1aafc8 ghost:3.36 "docker-entrypoint.s…" 4 minutes ago Up 4 minutes 2368/tcp ghost_ghost_1
Schritt 7 – Skalieren Sie den neuen Ghost-Container
Zu diesem Zeitpunkt werden beide Ghost-Container mit derselben Konfiguration ausgeführt. Jetzt werden wir anhalten und den alten Ghost-Container entfernen.
docker container stop ghost_ghost_1 docker container rm ghost_ghost_1
Führen Sie nun den folgenden Befehl aus, um die Konfiguration auf ihre ursprüngliche Einstellung herunterzuskalieren:
cd Ghost docker-compose up -d --scale ghost=1 --no-recreate
Weitere Informationen finden Sie auch im neuen Ghost-Container-Log.
docker logs ghost_ghost_2
Ausgabe:
[2021-03-05 04:50:13] INFO Blog is in maintenance mode. [2021-03-05 04:50:13] INFO Ghost is running in production... [2021-03-05 04:50:13] INFO Your site is now available on http://ghost.example.com/ [2021-03-05 04:50:13] INFO Ctrl+C to shut down [2021-03-05 04:50:13] INFO Ghost boot 3.581s [2021-03-05 04:50:13] INFO Creating database backup [2021-03-05 04:50:13] INFO Database backup written to: /var/lib/ghost/content/data/ghost.ghost.2021-03-05-04-50-13.json [2021-03-05 04:50:13] INFO Updating portal button setting to false [2021-03-05 04:50:13] INFO Blog is out of maintenance mode.
Ihr Ghost-Container ist jetzt mit einem neuen Ghost-Image aktualisiert.
Schlussfolgerung
In der obigen Anleitung haben Sie gelernt, wie Sie den Docker-Container ohne Ausfallzeiten aktualisieren. Beginnen Sie mit der Aktualisierung Ihres Docker-Containers auf VPS-Hosting von Atlantic.Net!