Comment utiliser docker container create pour préparer des conteneurs

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Dans ce labo, vous apprendrez à utiliser la commande docker create pour préparer des conteneurs Docker sans les démarrer immédiatement. Cela vous permet de configurer des conteneurs et des volumes avant leur exécution. Vous commencerez par créer un conteneur à partir de l'image Ubuntu, vérifierez son statut de création, puis démarrerez et vous connecterez au conteneur créé.

De plus, vous explorerez comment initialiser un volume à l'aide de docker create et utiliserez ensuite ce volume initialisé dans un autre conteneur. Cette expérience pratique démontrera la flexibilité et le contrôle offerts par la commande docker create dans la gestion du cycle de vie des conteneurs et de la persistance des données.


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker(("Docker")) -.-> docker/ContainerOperationsGroup(["Container Operations"]) docker(("Docker")) -.-> docker/ImageOperationsGroup(["Image Operations"]) docker/ContainerOperationsGroup -.-> docker/run("Run a Container") docker/ContainerOperationsGroup -.-> docker/ls("List Containers") docker/ContainerOperationsGroup -.-> docker/ps("List Running Containers") docker/ContainerOperationsGroup -.-> docker/start("Start Container") docker/ContainerOperationsGroup -.-> docker/attach("Attach to Container") docker/ContainerOperationsGroup -.-> docker/create("Create Container") docker/ImageOperationsGroup -.-> docker/pull("Pull Image from Repository") docker/ImageOperationsGroup -.-> docker/images("List Images") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") subgraph Lab Skills docker/run -.-> lab-555106{{"Comment utiliser docker container create pour préparer des conteneurs"}} docker/ls -.-> lab-555106{{"Comment utiliser docker container create pour préparer des conteneurs"}} docker/ps -.-> lab-555106{{"Comment utiliser docker container create pour préparer des conteneurs"}} docker/start -.-> lab-555106{{"Comment utiliser docker container create pour préparer des conteneurs"}} docker/attach -.-> lab-555106{{"Comment utiliser docker container create pour préparer des conteneurs"}} docker/create -.-> lab-555106{{"Comment utiliser docker container create pour préparer des conteneurs"}} docker/pull -.-> lab-555106{{"Comment utiliser docker container create pour préparer des conteneurs"}} docker/images -.-> lab-555106{{"Comment utiliser docker container create pour préparer des conteneurs"}} docker/volume -.-> lab-555106{{"Comment utiliser docker container create pour préparer des conteneurs"}} end

Créer un conteneur sans le démarrer

Dans cette étape, vous apprendrez comment créer un conteneur Docker sans le démarrer immédiatement. Cette approche est utile lorsque vous souhaitez configurer le conteneur ou ses volumes avant son exécution.

Commencez par télécharger l'image ubuntu depuis Docker Hub. Cette image servira à créer notre conteneur.

docker pull ubuntu:latest

Vous devriez voir une sortie indiquant que l'image est en cours de téléchargement. Une fois le téléchargement terminé, vous pouvez vérifier que l'image est disponible localement en listant les images.

docker images

Maintenant, nous allons créer un conteneur nommé my-ubuntu-container à partir de l'image ubuntu. Nous utiliserons la commande docker create pour cela. Les options -it sont généralement utilisées pour les conteneurs interactifs, mais docker create se contente de configurer le conteneur sans le lancer. Nous les incluons ici pour rester cohérent avec la manière dont vous pourriez éventuellement exécuter le conteneur.

docker create -it --name my-ubuntu-container ubuntu:latest

La commande docker create crée une couche de conteneur accessible en écriture au-dessus de l'image spécifiée et la prépare pour exécuter la commande indiquée. Elle ne démarre pas le conteneur. Vous devriez voir une longue chaîne de caractères en sortie, qui correspond à l'ID du conteneur.

Pour vérifier que le conteneur a été créé mais n'est pas en cours d'exécution, vous pouvez lister tous les conteneurs, y compris ceux qui sont arrêtés.

docker ps -a

Dans la sortie, vous devriez voir un conteneur nommé my-ubuntu-container avec un statut Created. Cela confirme que le conteneur a été créé avec succès mais n'est pas encore en cours d'exécution.

Démarrer le conteneur créé et s'y connecter

Dans l'étape précédente, vous avez créé un conteneur Docker nommé my-ubuntu-container sans le démarrer. Dans cette étape, vous apprendrez comment démarrer ce conteneur et connecter votre terminal à ses flux d'entrée, de sortie et d'erreur standards.

Pour démarrer le conteneur, utilisez la commande docker start suivie du nom du conteneur.

docker start my-ubuntu-container

Cette commande démarre le conteneur. Cependant, par défaut, il s'exécute en arrière-plan. Pour interagir avec le conteneur, vous devez vous y connecter.

Pour vous connecter au conteneur en cours d'exécution, utilisez la commande docker attach suivie du nom du conteneur.

docker attach my-ubuntu-container

Après avoir exécuté cette commande, votre terminal sera connecté au shell du conteneur. Vous devriez voir une invite de commande ressemblant à celle à l'intérieur du conteneur Ubuntu, généralement sous la forme root@<container-id>:/#.

Maintenant que vous êtes à l'intérieur du conteneur, vous pouvez y exécuter des commandes. Par exemple, vérifions la version du système d'exploitation.

lsb_release -a

Vous devriez voir une sortie affichant la version d'Ubuntu en cours d'exécution dans le conteneur.

Pour quitter le conteneur sans l'arrêter, appuyez sur Ctrl + P suivi de Ctrl + Q. Cela détache votre terminal du conteneur, laissant ce dernier s'exécuter en arrière-plan.

Si vous tapez simplement exit ou appuyez sur Ctrl + D pendant que vous êtes connecté, le conteneur s'arrêtera.

Après vous être détaché, vous pouvez vérifier que le conteneur est toujours en cours d'exécution en listant les conteneurs actifs.

docker ps

Vous devriez voir my-ubuntu-container listé avec un statut indiquant qu'il est en cours d'exécution.

Initialiser un volume avec docker create

Dans cette étape, vous apprendrez comment initialiser un volume Docker en utilisant la commande docker create. Cette méthode permet de créer un conteneur spécifiquement pour peupler un volume avec des données initiales provenant de l'image du conteneur.

Commencez par créer un nouveau conteneur nommé volume-initializer à partir de l'image ubuntu. Ce conteneur sera utilisé temporairement pour initialiser le volume. Nous utiliserons l'option -v pour spécifier le volume à initialiser et son point de montage dans le conteneur. Nous nommerons le volume my-initialized-volume et le monterons dans le répertoire /app_data du conteneur.

docker create -v my-initialized-volume:/app_data --name volume-initializer ubuntu:latest

Cette commande crée le conteneur et le volume s'il n'existe pas déjà. La partie -v my-initialized-volume:/app_data indique à Docker de créer un volume nommé my-initialized-volume et de le monter dans le répertoire /app_data du conteneur.

Maintenant, démarrons ce conteneur. Lorsqu'un conteneur avec un volume est démarré pour la première fois, si le volume est vide, Docker copie le contenu du répertoire spécifié par le point de montage depuis l'image vers le volume.

docker start volume-initializer

Comme ce conteneur sert uniquement à l'initialisation et n'exécute pas de processus de longue durée, il démarrera puis s'arrêtera immédiatement.

Vous pouvez vérifier que le conteneur s'est arrêté en listant tous les conteneurs.

docker ps -a

Vous devriez voir volume-initializer avec un statut Exited.

Pour confirmer que le volume my-initialized-volume a bien été créé, vous pouvez lister tous les volumes Docker.

docker volume ls

Vous devriez voir my-initialized-volume dans la liste des volumes.

À ce stade, le volume my-initialized-volume contient les données initiales qui étaient présentes dans le répertoire /app_data de l'image ubuntu:latest.

Utiliser un volume initialisé par docker create dans un autre conteneur

Dans l'étape précédente, vous avez initialisé un volume Docker nommé my-initialized-volume en créant et démarrant un conteneur temporaire. Maintenant, vous allez apprendre comment utiliser ce volume initialisé dans un autre conteneur. Cela démontre comment les volumes peuvent persister des données et être partagés entre conteneurs.

Commencez par créer un nouveau conteneur nommé data-consumer à partir de l'image ubuntu. Cette fois, nous allons directement exécuter le conteneur et monter le volume existant my-initialized-volume dans le répertoire /data de ce nouveau conteneur.

docker run -it --name data-consumer -v my-initialized-volume:/data ubuntu:latest /bin/bash

Décomposons cette commande :

  • docker run : Cette commande crée et démarre un nouveau conteneur
  • -it : Ces options allouent un pseudo-TTY et gardent stdin ouvert, permettant une utilisation interactive
  • --name data-consumer : Attribue le nom data-consumer au nouveau conteneur
  • -v my-initialized-volume:/data : C'est la partie cruciale. Elle monte le volume existant my-initialized-volume dans le répertoire /data du conteneur data-consumer
  • ubuntu:latest : Spécifie l'image à utiliser
  • /bin/bash : Commande à exécuter dans le conteneur, qui lance un shell bash

Après exécution de cette commande, vous serez connecté au shell bash dans le conteneur data-consumer.

Maintenant que vous êtes dans le conteneur data-consumer, naviguez vers le répertoire /data où est monté le volume my-initialized-volume.

cd /data

Vous pouvez ensuite lister le contenu de ce répertoire pour voir les données initialisées à l'étape précédente. Le contenu exact dépendra de ce qui se trouvait dans /app_data de l'image ubuntu:latest lors de l'initialisation.

ls -l

Vous devriez voir les fichiers et répertoires copiés depuis le répertoire /app_data de l'image Ubuntu vers le volume my-initialized-volume. Cela confirme que le volume a été correctement initialisé et est maintenant utilisé par ce nouveau conteneur.

Pour quitter le conteneur data-consumer, tapez simplement exit.

exit

Cela arrêtera le conteneur data-consumer et vous ramènera au terminal de votre machine hôte.

Vous pouvez vérifier que le conteneur data-consumer s'est arrêté en listant tous les conteneurs.

docker ps -a

Vous devriez voir data-consumer avec un statut Exited. Le volume my-initialized-volume existe toujours et conserve ses données.

Résumé

Dans ce lab, vous avez appris à utiliser la commande docker create pour préparer un conteneur Docker sans le démarrer immédiatement. Cela a impliqué de :

  • Télécharger une image
  • Créer un conteneur à partir de cette image en utilisant docker create
  • Vérifier son statut "Created"

Vous avez ensuite appris à démarrer le conteneur créé et à vous y connecter, démontrant ainsi la séparation entre la création et l'exécution d'un conteneur.

De plus, ce lab a couvert :

  • L'initialisation d'un volume Docker avec docker create
  • L'utilisation ultérieure de ce volume initialisé dans un autre conteneur

Cela illustre comment docker create peut être utilisé pour configurer des composants d'infrastructure comme des volumes avant qu'ils ne soient montés et utilisés par des conteneurs en cours d'exécution.