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 !