Comment utiliser les conteneurs Docker

Une photographie d'une personne programmant sur un ordinateur portable.

Les conteneurs sont le cœur de chaque installation Docker. Ils servent de fondation à la plateforme Docker et vous permettent d’exécuter des services sur votre ordinateur sans vous soucier des dépendances et des conflits de version. Ici, nous vous montrons les bases de la création, de la gestion et de la personnalisation des conteneurs Docker en utilisant l’outil CLI Docker.

Table des matières

  • Comment trouver et tirer une image Docker
  • Comment exécuter et arrêter un conteneur Docker
  • Comment inspecter un conteneur Docker
  • Comment personnaliser un conteneur Docker
  • Comment supprimer des conteneurs et des images Docker

Remarque : Commencez par installer Docker sur votre système Linux.

Comment trouver et tirer une image Docker

Les conteneurs Docker sont un type spécial d’environnement logiciel qui vous permet d’exécuter des programmes séparément du reste de votre système d’origine. Pour ce faire, Docker utilise des “images logicielles”. Ce sont des copies statiques de programmes qui servent de base à partir de laquelle un conteneur démarre.

Cette distinction entre image et conteneur vous permet de recréer et d’adapter votre logiciel de la manière nécessaire. Par exemple, vous pouvez avoir une image telle que “httpd” mais créer deux conteneurs distincts à partir de celle-ci : “site1” et “site2”.

Le moyen le plus simple de rechercher une nouvelle image Docker est d’utiliser la sous-commande search :

docker search httpd

Un terminal mettant en évidence l'image Docker httpd depuis l'outil CLI.

Vous pouvez également rechercher des paquets sur le site Docker Hub si vous préférez utiliser votre navigateur web.

Une capture d'écran montrant l'image Docker httpd sur le site Docker Hub.

Pour télécharger l’image sur votre système, exécutez la commande suivante :

docker image pull httpd

Confirmez que vous avez correctement ajouté votre nouvelle image à votre système en utilisant la sous-commande images :

docker images

Un terminal mettant en évidence l'image Docker httpd installée sur le système.

Création d’une nouvelle image à l’aide de Dockerfiles

En plus de tirer des images préconstruites depuis Docker Hub, vous pouvez construire des images directement depuis l’outil CLI Docker. Cela est utile si vous souhaitez créer des versions personnalisées de paquets logiciels existants ou si vous portez de nouvelles applications vers Docker.

Pour ce faire, commencez par créer un dossier dans votre répertoire personnel pour vos fichiers de construction :

mkdir ~/my-docker-image && cd ~/my-docker-image

Créez un nouveau Dockerfile en utilisant votre éditeur de texte préféré :

nano ./Dockerfile

Collez les lignes de code suivantes dans votre nouveau Dockerfile :

FROM nginx  
COPY sample-site /usr/share/nginx/html

Créez un dossier “sample-site” et copiez ou créez un site HTML de base :

mkdir ./sample-site  
cp ~/index.html ./sample-site/

Enregistrez votre nouveau Dockerfile, puis exécutez la commande suivante pour le construire sur votre système :

docker build -t custom-nginx .

Vérifiez si votre nouvelle image Docker est présente dans votre liste d’images Docker :

docker images

Un terminal mettant en évidence l'image personnalisée générée à partir de la sous-commande build.

Création d’une nouvelle image à partir de conteneurs existants

L’outil CLI Docker peut également construire de nouvelles images à partir des conteneurs qui existent actuellement dans votre système. Cela est utile si vous travaillez déjà sur un environnement existant et que vous souhaitez créer une nouvelle image à partir de votre configuration actuelle.

Pour ce faire, assurez-vous que votre conteneur n’est pas en cours d’exécution :

docker stop my-http-server

Exécutez la sous-commande commit suivie du nom de votre conteneur, puis fournissez le nom de votre nouvelle image Docker après cela :

docker commit my-http-server my-new-server-image

Confirmez que votre nouvelle image Docker est dans votre système en exécutant docker images.

Un terminal mettant en évidence la nouvelle image personnalisée d'un conteneur Docker installée dans le système.

Comment exécuter et arrêter un conteneur Docker

Avec votre image Docker prête, vous pouvez maintenant commencer à l’utiliser pour créer votre premier conteneur. Pour ce faire, utilisez la sous-commande run suivie du nom de l’image que vous souhaitez exécuter :

docker run httpd

Bien que cela fonctionne pour exécuter votre premier conteneur Docker, le faire de cette manière prendra le contrôle de votre session shell actuelle. Pour exécuter votre conteneur en arrière-plan, ajoutez le drapeau -d après la sous-commande run :

docker run -d httpd

La sous-commande run peut également accepter un certain nombre de drapeaux supplémentaires qui peuvent modifier le comportement de votre nouveau conteneur Docker. Par exemple, le drapeau --name vous permet d’ajouter un nom personnalisable à votre conteneur :

docker run -d --name=my-http-server httpd

D’autre part, vous pouvez utiliser le drapeau --publish pour rediriger le port réseau par lequel vous pouvez accéder à votre conteneur Docker. Cela est principalement utile si vous ne voulez pas que votre conteneur prenne le contrôle d’un port privilégié :

docker run -d --name=my-http-server --publish 8080:80 httpd

Une capture d'écran montrant un navigateur web ouvrant le site web hébergé par le conteneur Docker personnalisé.

Vous pouvez vérifier tous les conteneurs Docker actuellement en cours d’exécution dans votre système en exécutant la commande suivante :

docker ps

Tout comme la sous-commande run, ps peut également accepter un certain nombre de drapeaux qui modifieront son comportement. Par exemple, pour afficher les conteneurs qui sont actuellement arrêtés, utilisez le drapeau -a :

docker ps -a

Pour éteindre un conteneur en cours d’exécution, utilisez la sous-commande stop suivie de l’ID du conteneur ou du nom de votre conteneur Docker :

docker stop my-http-server

Vous pouvez redémarrer n’importe quel conteneur que vous avez arrêté en réexécutant la sous-commande start :

docker start my-http-server

En passant : apprenez les bases de l’hébergement web avec Docker en exécutant un simple site web en utilisant darkhttpd.

Mettre en pause et tuer un conteneur Docker

L’outil CLI Docker vous permet également de mettre temporairement en pause et de tuer un processus de conteneur en cours d’exécution. Cela peut être utile si vous dépannez un problème avec votre configuration Docker et que vous souhaitez soit isoler, soit arrêter un conteneur défaillant.

Commencez par exécuter docker ps pour lister tous les conteneurs en cours d’exécution dans le système.

Trouvez soit l’ID, soit le nom du conteneur que vous souhaitez gérer.

Un terminal mettant en évidence le conteneur Docker personnalisé actuellement en cours d'exécution dans le système.

Exécutez la sous-commande pause suivie du nom du conteneur que vous souhaitez suspendre temporairement :

docker pause my-http-server

Vous pouvez reprendre un processus suspendu en exécutant la sous-commande unpause :

docker unpause my-http-server

Pour arrêter un processus défaillant, exécutez la sous-commande kill suivie du nom de votre conteneur :

docker kill my-http-server

Comment inspecter un conteneur Docker

Connaître les détails complexes de votre conteneur est une partie vitale du maintien de la santé de votre pile Docker. Cela vous permet de rapidement examiner tout problème potentiel et cela peut faire la différence entre réparer et refaire l’ensemble de votre déploiement.

Pour obtenir un aperçu de votre conteneur Docker, exécutez la sous-commande inspect :

docker inspect my-http-server

Cela imprimera une longue chaîne JSON qui décrit l’état actuel de votre conteneur entier. Vous pouvez affiner cela soit en redirigeant la sortie vers jq, soit en utilisant le drapeau intégré -f suivi de l’objet JSON que vous souhaitez imprimer :

docker inspect -f {{.Name}} my-http-server

Imprimer les journaux du conteneur dans le terminal

En plus de cela, vous pouvez également suivre et imprimer les journaux de tout conteneur Docker actuellement en cours d’exécution. Cela peut être utile si vous souhaitez vérifier comment votre service se comporte actuellement et examiner la sortie qu’il renvoie à STDOUT.

Pour ce faire, exécutez la sous-commande logs suivie du nom de votre conteneur :

docker logs my-http-server

Vous pouvez également exécuter la sous-commande logs avec le drapeau --follow pour créer un journal continu de votre service Docker. Cela est similaire à l’exécution de tail -f à la fin d’un pipe UNIX :

docker logs --follow my-http-server

Un terminal montrant les journaux continus d'un conteneur Docker.

Tout comme d’autres sous-commandes, vous pouvez également ajouter divers drapeaux pour personnaliser la sortie des journaux de votre conteneur Docker. Par exemple, le drapeau --timestamps ajoute un horodatage détaillé pour chaque message que votre conteneur envoie à son STDOUT :

docker logs --timestamps my-http-server

Le drapeau --details imprimera même les variables d’environnement que vous avez définies pour votre conteneur Docker actuel. Pendant ce temps, le drapeau --since vous permet d’afficher uniquement les journaux qui se sont produits après un certain moment :

docker logs --details --since 8m my-http-server

Un terminal montrant une sortie de journal plus détaillée d'un conteneur Docker actuellement en cours d'exécution.

Comment personnaliser un conteneur Docker

Au fond, un conteneur Docker est une petite version allégée de Linux fonctionnant sur votre système actuel. Cela signifie que, tout comme une machine virtuelle, il est possible d’accéder et de récupérer les données à l’intérieur de votre conteneur.

Pour copier un fichier local de votre machine hôte vers le conteneur, exécutez la sous-commande cp :

docker cp ~/my-file my-http-server:/tmp

Parfois, vous devrez également “entrer” dans les conteneurs en ouvrant un shell à l’intérieur d’eux. De cette façon, vous pouvez modifier des fichiers, installer des binaires et les personnaliser selon vos besoins :

docker exec -it my-http-server /bin/bash

Maintenant, vous pourriez, par exemple, modifier “index.html” et créer une page d’accueil pour le site web à l’intérieur.

Un terminal montrant un fichier HTML copié dans le shell racine d'un conteneur Docker.

Pour quitter le shell du conteneur, appuyez soit sur Ctrl + D, soit exécutez exit dans le terminal.

Un terminal mettant en évidence la commande de sortie du shell racine du conteneur Docker.

Bon à savoir : apprenez à déplacer un conteneur Docker existant vers un nouveau système.

Comment supprimer des conteneurs et des images Docker

Supprimer les conteneurs et les images Docker inutilisés est une partie importante de l’entretien général de votre déploiement. Cela vous permet de retirer des fichiers inutiles de votre serveur, économisant de l’espace de stockage à long terme.

Avant de supprimer un conteneur, assurez-vous de l’avoir d’abord arrêté :

docker stop my-http-server

Maintenant, supprimez le conteneur en utilisant la sous-commande rm :

docker rm my-http-server

Confirmez que vous avez correctement supprimé votre ancien conteneur Docker en exécutant docker ps -a.

Un terminal montrant tous les conteneurs Docker disponibles, y compris ceux actuellement arrêtés.

Supprimez votre image Docker originale de votre déploiement Docker :

docker rmi my-new-server-image

Un terminal mettant en évidence la sortie de la suppression d'une image Docker du système.

Vérifiez si vous avez correctement supprimé votre image Docker originale en exécutant docker images.

Un terminal montrant la liste mise à jour des images Docker.

Apprendre à créer, gérer et supprimer des conteneurs Docker n’est qu’une partie de ce que vous pouvez faire avec votre serveur Linux. Explorez le monde profond de l’administration système Linux en hébergeant un serveur et un hub de conteneurs Docker avec XPipe.

Crédit image : Shamin Haky via Unsplash. Toutes les modifications et captures d’écran par Ramces Red.