Cours
L'installation de Docker sur Debian ne devrait pas nécessiter de deviner quelle méthode ne causera pas de problèmes à votre système.
La plupart des guides vous proposent plusieurs options d'installation sans expliquer quand utiliser chacune d'entre elles. Vous vous retrouvez avec des paquets obsolètes provenant du référentiel Debian, ou pire encore, avec des erreurs d'autorisation qui vous empêchent d'accéder à vos propres conteneurs. Le résultat ? Vous passez des heures à résoudre des problèmes au lieu de déployer des applications.
Le cycle de publication prévisible et la stabilité à toute épreuve de Debian en font une solution idéale pour les déploiements Docker en production. Vous bénéficiez de performances constantes des conteneurs, sans mises à jour système inattendues susceptibles de perturber votre configuration. En théorie, vous ne devriez pas rencontrer de problèmes après la partie la plus délicate : l'installation.
Dans ce tutoriel, je vais vous présenter quatre méthodes d'installation, les mesures de sécurité essentielles, la configuration du stockage et les étapes de dépannage pour que Docker fonctionne de manière fiable sur Debian.
Vous ne connaissez pas Docker? Veuillez commencer par vous familiariser avec les principes fondamentaux de Docker avant de passer aux étapes d'installation.
Configuration requise
Docker fonctionne sur la plupart des systèmes Debian modernes, mais vous devrez d'abord cocher quelques cases. Dans cette section, je vais vous indiquer la configuration système requise avant de commencer l'installation.
Debian 10 (Buster) ou une version plus récente est requise pour les versions actuelles de Docker. Les versions plus anciennes telles que Debian 9 ne sont pas compatibles avec les versions récentes de Docker Engine. Votre version du noyau doit être 3.10 ou supérieure - la plupart des installations Debian des dernières années répondent automatiquement à cette exigence.
Vous devez disposer d'un accès root ou des privilèges sudo pour installer les paquets Docker et configurer le système. Docker nécessite également les paquets principaux suivants : apt-transport-https, ca-certificates, curl et gnupg. La plupart des systèmes Debian les ont déjà installés, mais vous vérifierez ce point ultérieurement.
La configuration matérielle requise est minimale :
- 2 Go de RAM pour gérer les charges de travail de base des conteneurs, bien que 4 Go ou plus soient préférables pour les environnements de développement.
- 10 Go d'espace disque disponible est le minimum requis pour les images Docker et les données des conteneurs. Les configurations de production doivent prévoir beaucoup plus.
Si vous utilisez l'environnement de bureau GNOME, veuillez vous assurer que le paquet gnome-terminal est installé. Certains outils de gestion Docker l'attendent pour les sessions de conteneurs interactives.
Veuillez supprimer toute ancienne installation de Docker avant de commencer. Les paquets hérités tels que docker, docker.io ou docker-engine peuvent entrer en conflit avec le moteur Docker actuel. Veuillez exécuter cette commande pour supprimer les anciennes versions :
sudo apt remove docker docker-engine docker.io containerd runc
La configuration de votre pare-feu et de votre réseau peut affecter la mise en réseau des conteneurs. Docker crée ses propres interfaces réseau et règles iptables. Si vous utilisez UFW ou des règles de pare-feu personnalisées, il peut être nécessaire de les ajuster après l'installation afin d'autoriser le trafic des conteneurs.
Veuillez vérifier ces exigences dès maintenant afin d'éviter tout problème ultérieurement.
Méthodes d'installation
Il existe quatre méthodes pour installer Docker sur Debian, chacune présentant des avantages et des inconvénients. Je vous aiderai à choisir la méthode la mieux adaptée à votre environnement et à vos exigences en matière de sécurité.
Vous recherchez plutôt les instructions d'installation d'Ubuntu ? Nous disposons d'un guide complet étape par étape pour l'installation de Docker sur Ubuntu.
Méthode 1 : Référentiel Docker officiel (recommandé)
Cette méthode vous permet d'obtenir la dernière version de Docker avec des mises à jour de sécurité régulières.
Le référentiel officiel de Docker contient toujours les dernières versions stables, et vous bénéficiez de mises à jour automatiques via votre gestionnaire de paquets. Vous ne serez pas contraint d'utiliser des versions obsolètes qui ne bénéficient pas des correctifs de sécurité importants ou des nouvelles fonctionnalités.
Commencez par mettre à jour votre système et installer les paquets requis par Docker :
sudo apt update
sudo apt install apt-transport-https ca-certificates curl gnupg lsb-release
Ensuite, veuillez ajouter la clé GPG officielle de Docker afin de vérifier l'authenticité du paquet :
curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Veuillez configurer le référentiel en l'ajoutant à votre liste de sources :
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
Enfin, veuillez installer Docker Engine, CLI et Compose :
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
Vous disposez ainsi de tout ce dont vous avez besoin pour les déploiements Docker en production.
Méthode 2 : Référentiel Debian par défaut
Cette approche installe Docker à l'aide d'une seule commande, mais vous obtiendrez une version plus ancienne.
Le référentiel par défaut de Debian simplifie l'installation : il suffit d'exécuter la commande « sudo apt install docker.io ». Cependant, il existe un inconvénient : vous obtiendrez souvent des versions de Docker qui datent de plusieurs mois, voire de plusieurs années, par rapport à la version actuelle.
sudo apt update
sudo apt install docker.io
Cette méthode fonctionne bien pour les tests de base ou lorsque vous avez besoin d'une version antérieure spécifique pour des raisons de compatibilité. Cependant, vous ne bénéficierez pas des mises à jour de sécurité, des améliorations de performances et des nouvelles fonctionnalités incluses dans les dernières versions de Docker.
Veuillez utiliser cette méthode uniquement lorsque le référentiel officiel n'est pas disponible.
Méthode 3 : Installation manuelle du paquet DEB
Je vais vous montrer comment télécharger et installer des paquets directement lorsque vous ne pouvez pas accéder aux référentiels.
Cette méthode est efficace pour les systèmes isolés, les réseaux d'entreprise avec un accès Internet restreint ou lorsque vous devez installer la même version de Docker sur plusieurs machines sans avoir à la télécharger à plusieurs reprises.
Veuillez télécharger les paquets DEB depuis le site Web de Docker :
-
Veuillez vous rendre à
https://download.docker.com/linux/debian/dists/ -
Veuillez sélectionner votre version Debian (bullseye, bookworm, etc.).
-
Accédez à
pool/stable/amd64/ -
Veuillez télécharger les paquets suivants :
docker-ce_*.deb,docker-ce-cli_*.debetcontainerd.io_*.deb
Veuillez installer les paquets dans l'ordre suivant :
sudo dpkg -i containerd.io_*.deb
sudo dpkg -i docker-ce-cli_*.deb
sudo dpkg -i docker-ce_*.deb
Si vous rencontrez des erreurs de dépendance, veuillez exécuter « sudo apt-get install -f » pour les résoudre.
Cette méthode nécessite davantage de travail manuel pour les mises à jour, mais elle vous offre un contrôle total sur la version qui sera installée.
Méthode 4 : Scripts pratiques
La dernière méthode que je vais présenter vous permet une installation rapide pour les environnements de test, mais il est recommandé de vérifier le script au préalable.
Docker fournit des scripts d'installation qui détectent votre système et installent automatiquement Docker. Ils sont pratiques pour créer rapidement des environnements de test ou lorsque vous configurez Docker sur plusieurs systèmes.
curl -fsSL https://get.docker.com -o get-docker.sh
Veuillez toujours vérifier le script avant de l'exécuter :
cat get-docker.sh
Recherchez tout élément suspect ou inattendu. Le script modifiera la configuration de votre système, il est donc important que vous sachiez ce qu'il fait.
Veuillez exécuter le script après l'avoir examiné :
sudo sh get-docker.sh
Veuillez ne pas utiliser de scripts de commodité en production. Ils sont conçus pour une configuration rapide, et non pour des déploiements sécurisés et reproductibles. Veuillez vous en tenir à la méthode du référentiel officiel pour les systèmes importants.
Je vous recommande de choisir la méthode du référentiel officiel, sauf si vous avez des contraintes spécifiques qui nécessitent une approche différente.
Vérification de votre installation
L'installation n'est que la première étape : vous devez vérifier que Docker fonctionne correctement avant de déployer quoi que ce soit. Ces tests rapides vous permettront de déterminer si votre configuration Docker est prête pour des charges de travail réelles.
Veuillez vérifier votre version de Docker pour confirmer que l'installation est terminée :
docker --version
Vous devriez obtenir un résultat similaire à celui-ci : Docker version xx.x.x, build x. Si vous obtenez une erreur « commande introuvable », Docker n'a pas été installé correctement ou ne se trouve pas dans votre PATH.
Obtenir des informations détaillées sur la version pour voir quels composants sont en cours d'exécution :
docker version
Ceci affiche les versions distinctes du client et du serveur, ainsi que les détails de l'architecture. La section serveur confirme que le démon Docker est en cours d'exécution et accessible.
Exécutez un conteneur de test pour vérifier que tout fonctionne correctement de bout en bout :
docker run hello-world
Docker téléchargera l'image hello-world et l'exécutera. Si tout fonctionne correctement, un message s'affichera pour expliquer le fonctionnement des conteneurs Docker. Ce test confirme que Docker est en mesure de récupérer des images, de créer des conteneurs et d'exécuter des commandes.
Vous pouvez vérifier que Docker Compose est installé et qu'il fonctionne :
docker compose version
Vous devriez obtenir un résultat similaire à celui-ci : Docker Compose version vX.xx.x. Veuillez noter que les installations Docker plus récentes utilisent la commande « docker compose » (avec un espace) au lieu de l'ancienne commande « docker-compose ».
Si toutes ces commandes s'exécutent sans erreur, votre installation Docker est prête pour une utilisation en production.
Êtes-vous prêt à exécuter votre premier conteneur réel? Découvrez comment exécuter des images Docker étape par étape.
Configuration post-installation
Docker fonctionne immédiatement, mais il est recommandé de configurer certains paramètres pour une utilisation quotidienne. Dans cette section, nous aborderons la gestion des services et les autorisations utilisateur qui rendent Docker plus pratique et plus sécurisé.
Gestion des services
Vous pouvez contrôler quand Docker s'exécute à l'aide des commandes systemd suivantes :
sudo systemctl start docker # Start Docker
sudo systemctl stop docker # Stop Docker
sudo systemctl restart docker # Restart Docker service
Pour activer le démarrage automatique de Docker lorsque votre système démarre, veuillez exécuter la commande suivante :
sudo systemctl enable docker
Cela garantit que Docker s'exécute à chaque redémarrage de votre serveur, ce qui est souhaitable pour les systèmes de production.
Si vous devez vérifier si Docker est en cours d'exécution, veuillez suivre les instructions vérifier si Docker est en cours d'exécution et connaître son état actuel, veuillez exécuter la commande suivante :
sudo systemctl status docker
Vous pourrez voir si le service est actif, depuis combien de temps il fonctionne et les messages récents du journal. Si Docker ne fonctionne pas, cette commande vous indique généralement pourquoi.
Pour résoudre les problèmes liés au service, veuillez vérifier les journaux :
sudo journalctl -u docker.service
Cela affiche les journaux détaillés du démon Docker qui permettent de diagnostiquer les problèmes de démarrage, les erreurs d'autorisation ou les problèmes de configuration.
Accès utilisateur non root
Si vous devez ajouter votre utilisateur au groupe docker pour exécuter des commandes Docker sans sudo :
sudo usermod -aG docker $USER
Cela ajoute votre utilisateur actuel au groupe docker, ce qui vous donne l'autorisation de communiquer avec le démon Docker.
Vous devrez ensuite vous déconnecter et vous reconnecter pour que le changement de groupe prenne effet :
logout
Vous pouvez également redémarrer votre session de terminal. Vous pouvez également exécuter l'newgrp docker pour activer le groupe dans votre session actuelle sans vous déconnecter.
Enfin, pour tester l'accès non root, exécutez cette commande Docker :
docker run hello-world
Si cela fonctionne sans sudo, vous êtes prêt.
Cependant, il existe un compromis en matière de sécurité : Les utilisateurs du groupe docker disposent d'un accès équivalent à celui d'un utilisateur root sur votre système. Ils peuvent monter des répertoires hôtes, accéder à des fichiers sensibles et potentiellement s'échapper des conteneurs afin de compromettre l'hôte.
Veuillez ajouter uniquement des utilisateurs de confiance au groupe docker et ne procédez jamais ainsi sur des systèmes partagés dont vous ne contrôlez pas tous les utilisateurs.
Configurez ces paramètres une seule fois et Docker deviendra beaucoup plus facile à utiliser au quotidien.
Configuration du pilote de stockage
Le pilote de stockage Docker gère la manière dont les images et les données des conteneurs sont stockées sur votre système. La plupart des utilisateurs n'ont jamais besoin de le modifier, mais il est utile de connaître les options disponibles afin d'optimiser les performances pour des charges de travail spécifiques.
Docker sélectionne automatiquement le meilleur pilote de stockage pour votre système lors de l'installation. Sur Debian, il s'agit généralement de overlay2, qui offre d'excellentes performances et une grande stabilité pour la plupart des cas d'utilisation.
Veuillez vérifier votre pilote de stockage actuel à l'aide de la commande suivante :
docker info | grep "Storage Driver"
Le pilote overlay2 fonctionne correctement pour les raisons suivantes :
- Gère rapidement les opérations de copie à l'écriture lorsque les conteneurs modifient des fichiers
- Partage les calques entre les images pour économiser de l'espace disque
- Prend en charge toutes les fonctionnalités Docker sans problèmes de compatibilité
- Fonctionne de manière fiable sur différents types de systèmes de fichiers
Vous pourriez avoir besoin d'un autre pilote de stockage si vous exécutez des charges de travail spécialisées ou si vous avez des exigences spécifiques en matière de système de fichiers.
Par exemple, certains systèmes de stockage d'entreprise fonctionnent mieux avec le pilote devicemapper, ou vous pourriez avoir besoin de vfs pour déboguer des problèmes liés au système de fichiers conteneur.
Vous pouvez modifier le pilote de stockage en modifiant la configuration du démon Docker :
sudo nano /etc/docker/daemon.json
Dans ce fichier, veuillez ajouter ou modifier le paramètre storage-driver :
{
"storage-driver": "devicemapper"
}
Enfin, n'oubliez pas de redémarrer Docker pour appliquer la modification :
sudo systemctl restart docker
Veuillez noter que la modification des pilotes de stockage rendra vos conteneurs et images existants inaccessibles. Veuillez sauvegarder les données importantes ou exporter les conteneurs que vous souhaitez conserver.
Vous pouvez maintenant tester le nouveau pilote en extrayant une image et en exécutant un conteneur :
docker pull hello-world
docker run hello-world
En résumé, veuillez conserver overlay2, sauf si vous avez des exigences spécifiques qui nécessitent un pilote différent.
Renforcement de la sécurité
Les installations Docker par défaut fonctionnent correctement pour le développement, mais les environnements de production nécessitent des couches de sécurité supplémentaires. Ces configurations protègent votre système hôte contre les évasions de conteneurs et les attaques par épuisement des ressources.
Intégration SELinux/AppArmor
Les contrôles d'accès obligatoires ajoutent une couche de sécurité qui limite les actions des conteneurs, même s'ils sont compromis. Sans ces contrôles, un conteneur exécuté en tant que root peut potentiellement accéder à des ressources hôtes auxquelles il ne devrait pas avoir accès.
Vous pouvez activer AppArmor pour Docker, qui est le cadre de sécurité par défaut de Debian, en exécutant les commandes suivantes :
sudo apt install apparmor-utils
sudo systemctl enable apparmor
sudo systemctl start apparmor
Une fois AppArmor lancé, chargez le profil de sécurité de Docker :
sudo apparmor_parser -r /etc/apparmor.d/docker
Vous pouvez désormais exécuter des conteneurs avec la protection AppArmor activée :
docker run --security-opt apparmor=docker-default nginx
Le profil docker-default limite les capacités des conteneurs telles que le montage de systèmes de fichiers, l'accès aux interfaces réseau brutes et le chargement de modules du noyau.
Pour les systèmes SELinux (si vous l'utilisez à la place d'AppArmor), activez d'abord la gestion des conteneurs :
sudo setsebool -P container_manage_cgroup on
Exécutez ensuite les conteneurs avec les étiquettes SELinux :
docker run --security-opt label=type:container_t nginx
Ces contrôles bloquent de nombreuses techniques courantes d'évasion de conteneurs et limitent les dommages causés par les conteneurs compromis.
Configuration du démon
Il est possible (et recommandé) de personnaliser les paramètres du démon Docker afin de réduire la surface d'attaque et d'améliorer la sécurité. Veuillez créer ou modifier le fichier /etc/docker/daemon.json:
{
"live-restore": true,
"userland-proxy": false,
"no-new-privileges": true,
"icc": false,
"disable-legacy-registry": true
}
Voici la fonction de chaque paramètre :
-
live-restore: truemaintient les conteneurs en fonctionnement si le démon Docker tombe en panne -
userland-proxy: falseutilise directement iptables au lieu du proxy utilisateur pour de meilleures performances -
no-new-privileges: trueempêche les conteneurs d'obtenir de nouveaux privilèges -
icc: falsedésactive par défaut la communication entre conteneursdisable-legacy-registry: truebloque l'accès aux anciens protocoles de registre non sécurisés
Après avoir effectué ces modifications, veuillez redémarrer Docker pour les appliquer :
sudo systemctl restart docker
Il est également recommandé d'exécuter les conteneurs en tant qu'utilisateurs non root dans la mesure du possible :
docker run --user 1000:1000 nginx
Cela limite les actions que les conteneurs compromis peuvent effectuer sur votre système.
Limites des ressources avec les groupes de contrôle (cgroups)
Les conteneurs sans limites de ressources peuvent utiliser toute la mémoire, le processeur et les E/S disponibles, et finir par entraîner la défaillance de l'ensemble de votre système hôte. Les groupes de contrôle (cgroups) empêchent cela en imposant des limites strictes sur l'utilisation des ressources.
Commencez par définir des limites de mémoire afin d'éviter que les conteneurs n'utilisent trop de RAM :
docker run --memory=512m nginx
Vous pouvez également limiter l'utilisation du processeur afin d'éviter qu'un conteneur monopolise la puissance de traitement :
docker run --cpus=1.5 nginx
Pour les systèmes avec un nombre élevé d'E/S disque, contrôlez les vitesses de lecture/écriture :
docker run --device-read-bps /dev/sda:1mb nginx
Vous pouvez également combiner plusieurs limites pour un contrôle complet des ressources :
docker run \
--memory=1g \
--cpus=2 \
--pids-limit=100 \
nginx
Pour définir des limites cohérentes pour tous les conteneurs, configurez les valeurs par défaut dans votre fichier daemon.json :
{
"default-ulimits": {
"nofile": {
"Hard": 64000,
"Name": "nofile",
"Soft": 64000
}
}
}
Ces limites empêchent les attaques visant à épuiser les ressources et garantissent un partage équitable des ressources entre les conteneurs.
Configurez ces mesures de sécurité une seule fois et votre environnement Docker deviendra beaucoup plus difficile à compromettre.
Vous avez besoin de maîtriser les commandes Docker pour la gestion quotidienne? Ces 18 commandes Docker essentielles vous permettront d'être plus productif.
Résolution des problèmes courants
Même lorsqu'il est correctement installé, Docker peut rencontrer des problèmes qui empêchent les conteneurs de fonctionner correctement. Voici les problèmes les plus courants et comment les résoudre rapidement.
Erreurs d'autorisation
La plupart des problèmes d'autorisation Docker sont dus au fait que votre utilisateur ne dispose pas des droits d'accès nécessaires au fichier socket de Docker. Lorsque vous voyez « Got permission denied while trying to connect to the Docker daemon socket », cela signifie que vous n'appartenez pas encore au groupe docker.
Cela se produit car Docker s'exécute en tant que root, mais crée un socket auquel les membres du groupe docker peuvent accéder. Veuillez vous inscrire au groupe :
sudo usermod -aG docker $USER
Veuillez vous déconnecter puis vous reconnecter pour que la modification soit prise en compte. Si vous ne souhaitez pas vous déconnecter pour le moment, vous pouvez activer le groupe dans votre session actuelle :
newgrp docker
Les erreurs d'autorisation de fichiers à l'intérieur des conteneurs sont différentes, mais tout aussi courantes. Ces erreurs se produisent lorsque le processus du conteneur ne parvient pas à lire ou à écrire les fichiers que vous avez montés à partir de votre système hôte. Le conteneur est peut-être exécuté avec un identifiant utilisateur différent de celui qui possède vos fichiers.
Vérifiez quel utilisateur est propriétaire de vos fichiers :
ls -la /path/to/your/files
La plupart des conteneurs Docker s'exécutent par défaut avec l'ID utilisateur 1000. Si vos fichiers appartiennent à root ou à un autre utilisateur, modifiez leur propriétaire :
sudo chown -R 1000:1000 /path/to/your/files
Si vous utilisez SELinux (au lieu d'AppArmor), vous pourriez observer différents refus d'autorisation dans les journaux d'audit. Celles-ci sont plus complexes, car SELinux contrôle les processus qui peuvent accéder aux données en fonction des contextes de sécurité, et pas seulement des identifiants utilisateur.
Recherchez les violations d'accès récentes :
sudo ausearch -m avc -ts recent
Correction les contextes SELinux en activant la gestion des conteneurs et en restaurant les étiquettes appropriées sur vos volumes Docker :
sudo setsebool -P container_manage_cgroup on
sudo restorecon -R /path/to/your/volume
Défaillances du service
Lorsque Docker ne démarre pas ou plante sans cesse, il est nécessaire de comprendre la cause du problème avant de pouvoir le résoudre. Le statut du service systemd vous offre un aperçu rapide :
sudo systemctl status docker
Cela indique si Docker est en cours d'exécution et affiche les messages d'erreur récents. Cependant, pour un dépannage détaillé, il est recommandé de surveiller les journaux en direct pendant que Docker tente de démarrer :
sudo journalctl -u docker.service -f
Une erreur courante lors du démarrage se produit lorsque Docker ne s'est pas arrêté correctement : « ». Vous verrez s'afficher une erreur telle que « Échec du démarrage du démon : fichier pid trouvé, veuillez vous assurer que Docker n'est pas en cours d'exécution. » Cela signifie qu'il existe un fichier de processus résiduel qui perturbe le script de démarrage.
Veuillez supprimer le fichier obsolète et réessayer :
sudo rm /var/run/docker.pid
sudo systemctl start docker
Les problèmes de stockage constituent une autre cause fréquente de défaillance des démons. Docker stocke toutes ses données dans le répertoire « /var/lib/docker ». Si ce répertoire manque d'espace ou est endommagé, Docker ne peut pas démarrer correctement.
Veuillez vérifier l'espace disponible :
df -h /var/lib/docker
Si vous manquez d'espace, veuillez supprimer les anciens conteneurs et les images que vous n'utilisez plus :
docker system prune -a
Les conflits réseau peuvent également empêcher Docker de démarrer. Ceci se produit lorsque le réseau pont par défaut de Docker (généralement 172.17.0.0/16) entre en conflit avec votre configuration réseau existante. Vous verrez apparaître des erreurs indiquant que les plages d'adresses ne sont pas disponibles.
Pour résoudre ce problème, veuillez configurer une adresse IP de pont personnalisée qui n'entre pas en conflit avec votre réseau. Modifier l'/etc/docker/daemon.json:
{
"bip": "192.168.1.1/24"
}
Après avoir effectué la modification, veuillez redémarrer Docker afin d'utiliser la nouvelle configuration réseau :
sudo systemctl restart docker
Problèmes liés à un noyau obsolète
Docker dépend des fonctionnalités du noyau Linux pour la conteneurisation, la mise en réseau et la sécurité. Si votre noyau est trop ancien, vous rencontrerez des problèmes qui ne pourront être résolus sans mise à niveau.
Vérifiez la version du noyau que vous utilisez à l'aide de la commande suivante :
uname -r
Docker nécessite au minimum le noyau 3.10 pour fonctionner correctement, mais il est fortement recommandé d'utiliser la version 4.0 ou une version plus récente pour une utilisation en production. Toute version antérieure à la version 3.10 ne fonctionnera pas avec les versions modernes de Docker.
La mise à jour de votre noyau sur Debian est simple, il suffit d'installer le dernier paquet du noyau :
sudo apt update
sudo apt install linux-image-amd64
Le nouveau noyau ne sera pas actif tant que vous n'aurez pas redémarré votre système :
sudo reboot
Parfois, le noyau est suffisamment récent, mais certains modules du noyau ne sont pas chargés. Docker nécessite des modules spécifiques pour les fonctionnalités de mise en réseau et de conteneurisation. Vous rencontrerez des erreurs indiquant que les interfaces réseau ne sont pas disponibles ou que les conteneurs ne démarrent pas correctement.
Veuillez charger les modules essentiels manuellement :
sudo modprobe bridge
sudo modprobe ip_tables
sudo modprobe iptable_nat
Ces modules devraient se charger automatiquement, mais si ce n'est pas le cas, rendez-les permanents en les ajoutant à la configuration de votre système :
echo "bridge" | sudo tee -a /etc/modules
echo "ip_tables" | sudo tee -a /etc/modules
echo "iptable_nat" | sudo tee -a /etc/modules
Même avec un noyau récent, vous pourriez rencontrer des erreurs d'exécution de conteneur indiquant « opération non prise en charge ». Cela signifie généralement que votre noyau a été compilé sans certaines fonctionnalités attendues par Docker. Malheureusement, il n'existe aucune solution de contournement pour les fonctionnalités manquantes du noyau. Vous devez disposer d'un noyau correctement configuré.
La plupart des problèmes d'installation de Docker proviennent de l'un de ces trois domaines : les autorisations utilisateur, la configuration des services ou la compatibilité du noyau. Résolvez le problème sous-jacent plutôt que de contourner les symptômes, et votre environnement Docker sera beaucoup plus stable.
Vous travaillez avec des bases de données dans des conteneurs? La configuration de PostgreSQL dans Docker est plus simple qu'il n'y paraît.
Désinstallation de Docker
Il est parfois nécessaire de supprimer complètement Docker de votre système, que ce soit pour passer à un autre environnement d'exécution de conteneurs ou pour repartir de zéro après des problèmes de configuration.
Ce processus ne se limite pas à la suppression des paquets. Il est également recommandé de nettoyer les données et les modifications apportées au système.
Commencez par supprimer tous les paquets Docker de votre système. La commande exacte dépend de la manière dont vous avez initialement installé Docker.
Si vous avez effectué l'installation à partir du référentiel Docker officiel :
sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin
Si vous avez effectué l'installation à partir du dépôt par défaut de Debian :
sudo apt purge docker.io docker-compose
Cela supprime les paquets, mais conserve les fichiers de configuration et les dépendances dont d'autres paquets pourraient encore avoir besoin. Pour supprimer également ces éléments :
sudo apt autoremove --purge
Ensuite, supprimez le répertoire de données Docker si vous souhaitez supprimer toutes les images, tous les conteneurs et tous les volumes. Cette étape est facultative, mais recommandée pour un nettoyage complet.
Par défaut, Docker stocke toutes les données dans le répertoire « / /var/lib/docker ». La suppression de ce répertoire efface définitivement tous vos conteneurs, images, réseaux et volumes :
sudo rm -rf /var/lib/docker
Veuillez également supprimer le répertoire de configuration de Docker :
sudo rm -rf /etc/docker
Veuillez poursuivre en supprimant les groupes système et les utilisateurs créés par Docker lors de l'installation. Docker ajoute un groupe docker à votre système et peut avoir modifié les autorisations utilisateur.
Supprimez le groupe docker :
sudo groupdel docker
Si vous avez ajouté des utilisateurs au groupe docker, leur appartenance au groupe sera automatiquement supprimée lorsque vous supprimerez le groupe. Cependant, vous pouvez également supprimer manuellement des utilisateurs spécifiques du groupe avant de le supprimer :
sudo gpasswd -d username docker
Ensuite, supprimez les fichiers de service systemd de Docker et les fichiers de socket :
sudo rm -f /lib/systemd/system/docker.service
sudo rm -f /lib/systemd/system/docker.socket
sudo systemctl daemon-reload
Enfin, veuillez vérifier les processus Docker restants vérifiez qu'il ne reste aucun processus Docker qui pourraient encore être en cours d'exécution :
ps aux | grep docker
Si vous en trouvez, veuillez les arrêter manuellement :
sudo pkill -f docker
Une fois ces étapes effectuées, Docker devrait être complètement supprimé de votre système, sans aucun fichier ni configuration résiduel.
Vous envisagez des alternatives à Docker? Veuillez explorer d'autres plateformes de conteneurisation avant de procéder à la transition.
Conclusion et meilleures pratiques
Docker est désormais installé sur Debian, mais l'installation n'est que le début. La manière dont vous configurez et entretenez votre environnement Docker détermine si vous bénéficierez d'une expérience de production fluide ou si vous passerez des nuits à résoudre des problèmes liés aux conteneurs.
Vous souhaitez créer des conteneurs multi-plateformes pour différentes architectures? Docker Buildx simplifie les compilations multiplateformes.
Veuillez sélectionner votre méthode d'installation en fonction de vos contraintes. Le référentiel officiel Docker est le plus adapté à la plupart des environnements de production, car il vous permet de bénéficier des dernières fonctionnalités et des derniers correctifs de sécurité. Cependant, les réseaux isolés ou les exigences de cohérence des versions peuvent nécessiter une installation manuelle du DEB.
Sécurisez votre environnement Docker immédiatement. Activez AppArmor ou SELinux pour les contrôles d'accès obligatoires, configurez des paramètres de démon restrictifs et utilisez des cgroups pour limiter les ressources des conteneurs. Veuillez maintenir Docker à jour grâce aux mises à jour de sécurité automatiques, mais veuillez les tester dans un environnement de préproduction avant de les déployer.
Veuillez utiliser Docker Compose pour les applications multi-conteneurs. Au lieu de gérer des commandes d'docker run complexes, définissez votre pile d'applications dans YAML.
Veuillez surveiller l'utilisation du disque et procéder régulièrement à un nettoyage. Exécutez la commande « docker system prune » pour supprimer les images inutilisées et configurer la rotation des journaux afin d'éviter que les conteneurs ne remplissent votre disque.
Si vous avez besoin d'informations plus détaillées, la documentation officielle couvre les sujets avancés qui ne sont pasabordés dans ce guide. Veuillez consulter la documentation Docker pour obtenir des informations détaillées sur la mise en réseau, les pilotesde stockage et l'orchestration. La documentation du paquet Debian Docker explique les configurations spécifiques au paquet et les problèmes connus.
Docker sur Debian vous offre une plateforme stable et puissante pour les applications conteneurisées, à condition de la configurer avec soin et de la maintenir régulièrement.
Souhaitez-vous en savoir plus sur Docker, la conteneurisation et ses applications dans le domaine de la science des données et de l'apprentissage automatique ? Ces cours DataCamp constituent la prochaine étape idéale pour vous :
Foire aux questions
Quelle est la meilleure méthode pour installer Docker sur Debian en vue d'une utilisation en production ?
La méthode officielle du référentiel Docker constitue le choix le plus approprié pour les environnements de production, car elle fournit les dernières versions stables avec des mises à jour de sécurité régulières. Cette méthode vous garantit de bénéficier de toutes les dernières fonctionnalités et des correctifs essentiels qui pourraient ne pas être disponibles dans les dépôts par défaut de Debian. Vous bénéficierez également de mises à jour automatiques via votre gestionnaire de paquets, qui garantit la sécurité de votre installation Docker sans intervention manuelle.
Dois-je me soucier de la sécurité lorsque j'utilise Docker sur Debian ?
Oui, la sécurité de Docker nécessite une configuration minutieuse au-delà de l'installation de base. Les conteneurs partagent le noyau hôte, de sorte qu'un conteneur compromis pourrait potentiellement accéder aux ressources de l'hôte s'il n'est pas correctement isolé. Il est recommandé d'activer AppArmor ou SELinux pour les contrôles d'accès obligatoires, de configurer les limites de ressources avec cgroups et d'exécuter les conteneurs en tant qu'utilisateurs non root dans la mesure du possible. De plus, veuillez maintenir Docker à jour et éviter d'ajouter des utilisateurs au groupe docker, sauf en cas d'absolue nécessité, car cela accorde un accès au système équivalent à celui de l'administrateur.
Est-il possible d'exécuter Docker sur des versions antérieures de Debian ?
Docker nécessite Debian 10 (Buster) ou une version plus récente pour fonctionner avec les versions actuelles de Docker Engine. Les versions plus anciennes telles que Debian 9 ne disposent pas des fonctionnalités du noyau et des dépendances de paquets nécessaires au fonctionnement de Docker moderne. Si vous utilisez une ancienne version de Debian, vous devrez d'abord mettre à niveau votre système, car il n'existe aucune solution fiable pour pallier l'absence de la fonctionnalité du noyau dont Docker dépend pour la conteneurisation et la mise en réseau.
Pourquoi Docker ne démarre-t-il pas après l'installation et comment puis-je résoudre les problèmes liés au démon ?
Les défaillances du démon Docker proviennent généralement de trois causes principales : des problèmes de stockage, des conflits réseau ou des fichiers de processus résiduels provenant d'installations précédentes. docker system prune -a Veuillez vérifier si le dossier « /var/lib/docker » dispose de suffisamment d'espace disque à l'aide de l'outil « df -h /var/lib/docker » et, si nécessaire, procédez au nettoyage à l'aide de l'outil En cas de conflits réseau, l'adresse IP du pont par défaut de Docker (172.17.0.0/16) peut entrer en conflit avec votre configuration réseau existante, vous obligeant à configurer une adresse IP de pont personnalisée dans /etc/docker/daemon.json. Si vous voyez des erreurs « fichier pid trouvé », supprimez le fichier obsolète à l'aide de la commande « sudo rm /var/run/docker.pid » et redémarrez le service.
Comment puis-je supprimer correctement Docker et toutes ses données de mon système Debian ?
La suppression complète de Docker nécessite plus que la simple désinstallation des paquets. Vous devez également nettoyer les répertoires de données, les groupes système et les fichiers de service. Commencez par purger les paquets Docker à l'aide de la commande « sudo apt purge docker-ce docker-ce-cli containerd.io docker-compose-plugin », puis supprimez le répertoire de données à l'aide de la commande « sudo rm -rf /var/lib/docker » (cela supprime définitivement tous les conteneurs et toutes les images). Supprimez le groupe docker à l'aide de la commande « sudo groupdel docker », supprimez les fichiers de service systemd et vérifiez qu'il ne reste aucun processus Docker à l'aide de la commande « ps aux | grep docker ». Cela garantit une table rase si vous devez réinstaller ou passer à un autre runtime de conteneur.
