GNU/Linux >> Tutoriels Linux >  >> Linux

Comment mettre à jour le conteneur Docker sans aucun temps d'arrêt

Dans un environnement Dockerisé, vous utilisez plusieurs images et travaillez avec de nombreux conteneurs. Lorsque vous exécutez un conteneur à partir d'une image, il continue d'exécuter cette version car les images Docker ne se mettent pas à jour automatiquement. Vous devrez peut-être le mettre à jour manuellement. Il est toujours recommandé d'exécuter un conteneur à partir de la dernière image Docker.

Dans ce guide, nous vous montrerons des exemples pratiques de mise à jour d'un conteneur en cours d'exécution sans aucun temps d'arrêt.

Prérequis

  • Un nouveau serveur Ubuntu 20.04 sur la plate-forme cloud Atlantic.Net
  • Un mot de passe root configuré sur votre serveur

Étape 1 - Créer un serveur cloud Atlantic.Net

Tout d'abord, connectez-vous à votre serveur Atlantic.Net Cloud. Créez un nouveau serveur en choisissant Ubuntu 20.04 comme système d'exploitation avec au moins 2 Go de RAM. Connectez-vous à votre serveur cloud via SSH et connectez-vous à l'aide des informations d'identification mises en évidence en haut de la page.

Une fois que vous êtes connecté à votre serveur Ubuntu 20.04, exécutez la commande suivante pour mettre à jour votre système de base avec les derniers packages disponibles.

apt-get update -y

Étape 2 – Installer Docker CE et Docker Compose

Tout d'abord, installez toutes les dépendances requises avec la commande suivante :

apt-get install git apt-transport-https ca-certificates curl software-properties-common -y

Ensuite, ajoutez la clé Docker GPG et le référentiel avec la commande suivante :

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"

Une fois le dépôt ajouté, installez le Docker et Docker compose avec la commande suivante :

apt-get install docker-ce docker-compose -y

Une fois les deux packages installés, vous pouvez passer à l'étape suivante.

Étape 3 - Créer un fichier Docker Compose

Pour les besoins de ce didacticiel, nous allons créer un réseau docker, un volume et un fichier docker-compose.yml pour déployer un conteneur Ghost.

Commencez par créer un réseau nommé net et un volume nommé ghost à l'aide de la commande suivante :

docker network create net
docker volume create ghost

Créez ensuite un répertoire pour le projet Ghost avec la commande suivante :

mkdir Ghost

Ensuite, changez le répertoire en Ghost et créez un fichier docker-compose.yml :

cd Ghost
nano docker-compose.yml

Ajoutez les lignes suivantes :

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

Enregistrez et fermez le fichier lorsque vous avez terminé.

Le fichier ci-dessus téléchargera l'image Ghost version 3.36 et créera un conteneur Ghost pour le domaine ghost.example.com.

Étape 4 - Créer un conteneur fantôme

Maintenant, changez le répertoire en Ghost et lancez le conteneur Ghost en utilisant la commande suivante :

docker-compose up -d

Vous devriez obtenir le résultat suivant :

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

Vous pouvez vérifier l'image fantôme avec la commande suivante :

docker images

Sortie :

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ghost        3.36      455ce1645479   4 months ago   440MB

Vous pouvez également vérifier le conteneur Ghost avec la commande suivante :

docker ps

Sortie :

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

Étape 5 - Mettre à jour le fichier Docker Compose

Dans cette section, nous allons mettre à jour le fichier de composition Docker et changer la version de Ghost de 3.36 à 3.37.1 :

nano docker-compose.yml

Effectuez les modifications suivantes :

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

Enregistrez et fermez le fichier lorsque vous avez terminé.

Étape 6 :Lancer un nouveau conteneur fantôme

Maintenant, nous allons utiliser la méthode de mise à l'échelle pour créer un nouveau conteneur Ghost sans affecter l'ancien conteneur Ghost. Vous pouvez le faire avec la commande suivante :

cd Ghost
docker-compose up -d --scale ghost=2 --no-recreate

Vous devriez obtenir le résultat suivant :

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

Vous pouvez vérifier la nouvelle image Ghost avec la commande suivante :

docker images

Sortie :

REPOSITORY   TAG       IMAGE ID       CREATED        SIZE
ghost        3.37.1    c64d108acdfe   3 months ago   439MB
ghost        3.36      455ce1645479   4 months ago   440MB

Vous pouvez également vérifier le nouveau conteneur Ghost avec la commande suivante :

docker ps

Sortie :

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

Étape 7 – Mettre à l'échelle le nouveau conteneur fantôme

À ce stade, les deux conteneurs Ghost s'exécutent avec la même configuration. Maintenant, nous allons arrêter et supprimer l'ancien conteneur Ghost.

docker container stop ghost_ghost_1
docker container rm ghost_ghost_1

Maintenant, exécutez la commande suivante pour réduire la configuration à son paramètre d'origine :

cd Ghost
docker-compose up -d --scale ghost=1 --no-recreate

Vous pouvez également consulter le nouveau journal du conteneur Ghost pour plus d'informations.

docker logs ghost_ghost_2

Sortie :

[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.

Votre conteneur Ghost est maintenant mis à jour avec une nouvelle image Ghost.

Conclusion

Dans le guide ci-dessus, vous avez appris à mettre à jour le conteneur Docker sans aucun temps d'arrêt. Commencez par mettre à jour votre conteneur Docker sur l'hébergement VPS d'Atlantic.Net !


Linux
  1. Comment installer WordPress avec Docker sur Ubuntu

  2. Comment installer Jenkins avec Docker

  3. Comment mettre à jour un Iso avec Zsync ?

  4. Comment déployer un conteneur nginx avec Docker sur Linode

  5. Comment exécuter MySQL dans un conteneur Docker

Comment copier des fichiers avec Docker cp dans votre conteneur Docker

Mise à jour des conteneurs Docker avec un temps d'arrêt nul ou minimum

Comment se connecter en SSH à un conteneur Docker

Comment déployer CouchDB en tant que cluster avec Docker

Comment :démarrer avec les conteneurs Windows et Docker

Comment gérer les conteneurs Docker