GNU/Linux >> LINUX-Kenntnisse >  >> Linux

So aktualisieren Sie den Docker-Container ohne Ausfallzeiten

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!


Linux
  1. So installieren Sie WordPress mit Docker auf Ubuntu

  2. So installieren Sie Jenkins mit Docker

  3. Wie aktualisiere ich eine Iso mit Zsync?

  4. So stellen Sie einen Nginx-Container mit Docker auf Linode bereit

  5. So beenden Sie einen Docker-Container

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

Aktualisieren von Docker-Containern ohne oder mit minimaler Ausfallzeit

So führen Sie SSH in einen Docker-Container ein

So stellen Sie CouchDB als Cluster mit Docker bereit

Gewusst wie:Erste Schritte mit Windows-Containern und Docker

So verwalten Sie Docker-Container