Comment installer et utiliser Docker sur Debian 12
Docker est un ensemble de plates-formes ouvertes qui fournissent une virtualisation au niveau du système d'exploitation pour le développement, la livraison et l'exécution d'applications. Dans Docker, les applications sont livrées sous forme de packages d'unités standardisées appelées conteneurs. Chaque conteneur est isolé les uns des autres, y compris les bibliothèques et les fichiers de configuration, mais chacun peut communiquer via des canaux réseau bien définis.
Pour l’instant, Docker est devenu un standard pour le développement logiciel et DevOps. Des millions de développeurs l'utilisent quotidiennement pour créer, partager et exécuter des applications au travail. Il est utilisé dans le cycle de vie du développement d'applications, depuis le développement lui-même jusqu'aux tests et à la production. Avec Docker, l'application devient plus flexible et portable. Les applications peuvent être exécutées facilement n'importe où dans différents systèmes d'exploitation, mais l'application elle-même reste la même, des bibliothèques aux fichiers de configuration.
Dans ce guide, je vais vous montrer comment installer Docker Engine sur la dernière Debian 12. Vous passerez également en revue la gestion du service Docker via systemctl et apprendrez l'utilisation de base de Docker pour gérer les images, les conteneurs et les volumes.
Conditions préalables
Assurez-vous d’avoir les exigences suivantes avant de suivre ce guide :
Une machine Debian 12 - Vous pouvez utiliser soit un ordinateur de bureau, soit un serveur Debian.
Un utilisateur non root avec les privilèges d'administrateur sudo.
Installation du moteur Docker
Pour obtenir la dernière version de Docker Engine, vous devez l'installer via le référentiel officiel Docker. Vous devez d'abord ajouter le référentiel Docker et la clé GPG, puis installer Docker Engine.
Tout d’abord, mettez à jour et actualisez le référentiel Debian pour obtenir les dernières informations sur les packages. Ensuite, installez le package de base ca-certificates, curl et gnupg sur votre système Debian. Lorsque vous y êtes invité, saisissez y et appuyez sur ENTRÉE pour confirmer.
sudo apt update
sudo apt install ca-certificates curl gnupg
Exécutez maintenant les commandes suivantes pour configurer la clé GPG pour le référentiel Docker, qui sera stockée dans le répertoire /etc/apt/keyrings/.
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
Après cela, exécutez la commande ci-dessous pour ajouter le référentiel Docker pour le système Debian. Au moment d'écrire ces lignes, Docker fournit des référentiels pour Debian 11 et 12.
echo \
"deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/debian \
"$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \
sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Ensuite, actualisez à nouveau le référentiel Debian et installez Docker Engine via la commande apt ci-dessous. Cette commande installera également le conteneurd, qui est le moteur de conteneur par défaut, le plugin Docker buildx comme plugin de construction par défaut avec des fonctionnalités BuildKit, et le Docker compose comme plugin .
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
Saisissez y lorsque vous y êtes invité et appuyez sur ENTRÉE.
Après avoir installé Docker, exécutez la commande suivante pour vérifier la version. Au moment d'écrire ces lignes, Docker v24.0.4 est installé sur Debian 12.
docker version
Gestion du service Docker
Le moteur Docker nécessitait le containerd, qui est utilisé comme moteur de conteneur par défaut. containerd et docker doivent être exécutés sur votre hôte Docker. Vous allez maintenant apprendre à gérer les services Docker et containersd via l'utilitaire systemd systemctl.
Sur Debian, les services docker et containersd sont automatiquement activés. Exécutez la commande suivante pour vérifier les services docker et containersd.
sudo systemctl is-enabled docker
sudo systemctl is-enabled containerd
Si activé, vous devriez obtenir la sortie activée sur votre terminal.
Exécutez maintenant la commande ci-dessous pour vérifier l’état du service de docker et containersd.
sudo systemctl status docker
sudo systemctl status containerd
Si le service est en cours d'exécution, le message actif (en cours d'exécution) s'affichera sur votre terminal.
Ensuite, vous pouvez exécuter la commande ci-dessous pour démarrer les services docker et containersd.
sudo systemctl start docker
sudo systemctl start containerd
Si nécessaire pour arrêter Docker, exécutez les commandes suivantes pour arrêter les services Docker et containersd.
sudo systemctl stop docker
sudo systemctl stop containerd
Enfin, redémarrez en utilisant la commande suivante si vous apportez des modifications à la configuration de Docker.
sudo systemctl restart docker
sudo systemctl restart containerd
Configuration de Docker pour les utilisateurs non root
Par défaut, seul le root peut exécuter le conteneur avec Docker Engine. Pour autoriser les utilisateurs non root, vous devez ajouter l'utilisateur au groupe Docker. Pour ajouter votre utilisateur au groupe Docker, complétez ces sections, puis exécutez le conteneur hello-world.
Exécutez la commande usermod ci-dessous pour ajouter votre utilisateur au groupe docker et connectez-vous en tant qu'utilisateur via su.
sudo usermod -aG docker username
su - username
Entrez maintenant la commande suivante pour exécuter le conteneur hello-world via votre utilisateur.
docker run hello-world
Si tout se passe bien, le message Hello World du conteneur Docker devrait s'afficher comme ceci :
Enfin, l'exécution de la commande docker ci-dessous peut vérifier les conteneurs de la liste.
docker ps -a
Vous devriez voir un conteneur avec le statut Quitté. Le nom du conteneur hello-world est aléatoire par défaut, dans ce cas, le nom est optmistic_edison.
Exécuter et gérer un conteneur avec Docker
À ce stade, le moteur Docker est en cours d'exécution et vous pouvez commencer à créer des conteneurs via la ligne de commande Docker. Dans la section suivante, vous apprendrez l'utilisation de base de Docker pour :
- Gestion des images Docker
- Création et gestion de conteneurs
- Vérification des journaux du conteneur
- Création et gestion du volume Docker
Gestion des images Docker
Une image Docker est l'ensemble de votre application regroupé dans une seule image et facilement distribuée via le registre d'images. Le registre d'images par défaut pour Docker est https://hub.docker.com/.
Dans la section suivante, vous apprendrez comment télécharger des images Docker, vérifier les images téléchargées et supprimer des images.
Pour télécharger l'image Docker depuis Docker Registry, exécutez la commande docker pull ci-dessous. La commande suivante téléchargera l'image nginx avec la balise par défaut latest.
docker pull nginx
Pour spécifier la version de l'image, ajoutez la version de l'imageur après l'image cible comme suit.
docker pull nginx:alpine
Vérifiez maintenant les images disponibles sur votre hôte Docker via la commande ci-dessous.
docker images
Les images Docker téléchargées doivent être disponibles avec des informations détaillées telles que la balise et la taille de l'image.
Enfin, utilisez le paramètre rmi pour supprimer l'image Docker de votre machine.
docker rmi imagename
Gestion des conteneurs
Un conteneur est l'endroit où votre application s'exécute et il est basé sur votre image Docker. Un conteneur peut monter un répertoire ou un volume spécifique pour les données persistantes et exposer un port spécifique dans l'hôte Docker pour l'application.
Dans cette section, vous apprendrez comment créer et exécuter le conteneur, vérifier le conteneur, ainsi que démarrer et arrêter le conteneur via la ligne de commande Docker.
Pour exécuter le conteneur, utilisez le paramètre run dans la commande docker comme ceci.
docker run -it -d -p 8080:80 --name web nginx:alpine
La commande suivante exécutera un conteneur web en utilisant l'image nginx:alpine. En outre, le Web du conteneur exposera le port 80 dans le conteneur et le port 8080 dans la machine hôte Docker. De plus, le paramètre -it vous détachera du conteneur et le paramètre -d exécutera le conteneur Web en arrière-plan.
Exécutez maintenant la commande docker ps ci-dessous pour vérifier la liste des conteneurs sur votre machine Docker.
docker ps
docker ps -a
Si tout se passe bien, vous devriez voir le Web du conteneur fonctionner et le port exposé 8080 sur la machine hôte.
Alors que la commande docker run créera et démarrera le conteneur, vous pouvez également démarrer et arrêter le conteneur via la commande docker.
Exécutez la commande docker stop ci-dessous pour arrêter le conteneur web.
docker container stop web
docker ps -a
Pour redémarrer le Web de conteneurs, utilisez la commande docker start suivante.
docker container start web
docker ps
Enfin, exécutez la commande docker rm ci-dessous pour supprimer le conteneur. Le paramètre -f est utilisé pour forcer la suppression du conteneur, même lorsque le conteneur cible est en cours d'exécution.
docker container rm optimistic_edison
docker container rm optimistic_edison -f
Vérification des journaux de conteneur
La vérification des journaux dans Docker est importante car vous en aurez toujours besoin pour déboguer votre application conteneurisée. Vous allez maintenant apprendre à vérifier les journaux des conteneurs dans Docker.
Pour vérifier les journaux du conteneur, utilisez le paramètre logs dans la commande docker comme ceci. Cela affichera les journaux depuis la création du conteneur.
docker logs web
Vous pouvez désormais également ajouter l'option --tail N pour obtenir uniquement les derniers journaux comme celui-ci. Dans ce cas, l'option --tail 15 affichera uniquement les 15 dernières lignes de logs.
docker logs --tail 15 web
Gestion du volume Docker
Le volume Docker est l'endroit où votre application peut utiliser le stockage persistant. Vous pouvez modifier vos conteneurs tout en utilisant le même volume ou les mêmes données pour votre application. La section suivante vous montre l'utilisation de base du volume Docker, de la création du volume à la vérification et à l'utilisation du volume dans le conteneur.
Pour créer un nouveau volume, exécutez la commande docker volume ci-dessous. Dans cette démo, vous allez créer un nouveau volume Docker myvol.
docker volume create myvol
Vérifiez les volumes disponibles sur votre hôte Docker en utilisant l'option ls comme celle-ci. Vous devriez voir que le volume myvol est créé.
docker volume ls
Par défaut, Docker créera un volume avec le pilote local, qui utilise le répertoire local comme magasin de données. Et le répertoire du magasin de données par défaut se trouve dans le répertoire /var/lib/docker/volume. Exécutez l'option d'inspection comme celle-ci pour vérifier les détails du volume myvol.
docker volume inspect myvol
Vous devriez voir le volume myvol avec le pilote local par défaut et le magasin de données se trouve dans le répertoire /var/lib/docker/volumes/myvol/_data. La section Mountpoint est le répertoire du magasin de données local.
Ensuite, vous pouvez utiliser le volume Docker sur votre conteneur via l'option -v, qui combine toutes les options dans un seul champ, et l'option --mount qui est plus explicite, syntaxe verbeuse et séparée.
Exécutez la commande docker run suivante pour créer un nouveau conteneur web2 avec le volume myvol via l'option --mount. Ensuite, inspectez le Web du conteneur via la commande docker inspect.
docker run -d \
-p 8081:80 \
--name web2 \
--mount source=myvol,target=/app \
nginx:alpine
docker inspect web
dans la section Mounts, vous devriez voir que le Web du conteneur utilise le volume myvol vers le répertoire de destination /app à l'intérieur du conteneur.
Pour utiliser l'option -v, la commande docker run devrait ressembler à ceci. L'option -v utilise un champ unique pour monter le volume myvol2 dans le répertoire cible /app.
docker run -d \
-p 8082:80 \
--name web3 \
-v myvol2:/app \
nginx:alpine
Enfin, exécutez la commande docker volume ci-dessous avec le paramètre rm pour supprimer le volume Docker
docker rm web2 -f
docker volume rm myvol
Conclusion
Super travail! Vous avez terminé l'installation de Docker Engine sur votre serveur Debian 12. Vous avez également appris à gérer le service Docker via l'utilitaire de commande systemctl et à gérer les images Docker, les conteneurs et les volumes Docker via le client Docker.
Pour aller plus loin, vous pouvez commencer à créer une image Docker pour votre application via Dockerfile.