Ce didacticiel poursuit la série d'articles liés à Docker et couvre les commandes Docker les plus souvent utilisées. Nous commençons par un bref aperçu de Docker, puis passons à l'installation de Docker sur votre serveur. Ensuite, nous vous expliquerons toutes les commandes requises pour gérer les conteneurs, les images et les volumes Docker. Devenez un utilisateur professionnel de Docker en suivant ce guide en 10 minutes.
Qu'est-ce que Docker
Docker est une plate-forme ouverte pour le développement, la livraison et l'exécution d'applications. Il s'agit de la norme de facto pour l'empaquetage et le partage d'applications, du bureau au cloud.
Pour atteindre son objectif, Docker utilise des conteneurs.
Le conteneur a les caractéristiques suivantes :
- Un conteneur est un package pour le logiciel et toutes les bibliothèques requises.
- Dès son lancement, un conteneur détermine un environnement d'exécution pour votre application.
- Un conteneur est plus léger qu'une machine virtuelle, il peut donc être lancé beaucoup plus rapidement.
- Un conteneur est distribué sous la forme d'une image composée de plusieurs couches. Plusieurs conteneurs peuvent réutiliser ces couches.
Les fonctionnalités ci-dessus vous permettent :
- Créez des environnements isolés pour le déploiement.
- Lancez vos applications en quelques minutes.
Docker vous aide à simplifier et à automatiser chaque étape du processus de développement logiciel.
Voici les fonctionnalités essentielles de Docker :
- Docker a une communauté géante.
- Docker est un moyen simple et léger de distribuer des logiciels.
- Docker dispose d'un référentiel public géant de conteneurs à toutes fins possibles.
- Docker réduit les coûts de développement et d'exploitation.
- La configuration de Docker est simple et rapide.
- Docker permet d'isoler les applications.
- L'image Docker a des calques, qui ont un contrôle de version.
- Docker automatise chaque étape de la gestion des conteneurs.
Vous pouvez installer Docker sur les systèmes d'exploitation Linux, macOS et Windows.
Installer Docker
Cette section décrit comment installer le package Docker CE (édition communautaire) sur le système d'exploitation Linux.
Si vous utilisez le cloud AWS, je vous suggère un article sur l'installation automatique de Docker sur l'instance EC2 à l'aide de CloudFormation.
Installer Docker sur Ubuntu/Debian
Par défaut, le référentiel par défaut d'Ubuntu ou de Debian ne contient pas la dernière version du package Docker CE. Vous devrez donc ajouter le référentiel officiel Docker CE à votre système.
Avant d'ajouter le référentiel, installez certaines dépendances requises en exécutant la commande suivante :
apt-get install apt-transport-https ca-certificates curl software-properties-common curl -y
Après avoir installé toutes les dépendances, importez la clé Docker GPG à l'aide de la commande suivante :
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
Ensuite, ajoutez le référentiel officiel Docker CE au fichier source APT avec la commande suivante :
add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
Une fois le référentiel ajouté, vous devrez mettre à jour le cache du référentiel. Vous pouvez le mettre à jour avec la commande suivante :
apt-get update -y
Une fois votre référentiel à jour, exécutez la commande suivante pour installer la dernière version de Docker CE sur votre système.
apt-get install docker-ce -y
La commande ci-dessus installera le package Docker CE sur votre système et démarrera le service automatiquement.
Vous pouvez vérifier la version installée de Docker CE en exécutant la commande suivante :
docker --version
Vous devriez voir la version de Docker dans la sortie suivante :
Docker version 19.03.13, build 4484c46d9d
Si vous souhaitez supprimer le package Docker de votre système, exécutez la commande suivante :
apt-get remove docker-ce
Installer Docker sur CentOS/RHEL
Pour le système d'exploitation CentOS ou RHEL, vous devrez installer le dépôt Docker CE sur votre système. Vous pouvez utiliser la commande DNF pour ajouter et activer le référentiel Docker CE comme indiqué ci-dessous :
dnf config-manager --add-repo=https://download.docker.com/linux/centos/docker-ce.repo
Une fois le référentiel Docker CE ajouté, vous pouvez répertorier toutes les versions disponibles de Docker CE en exécutant la commande suivante :
dnf list docker-ce --showduplicates | sort -r
Vous devriez obtenir la liste complète dans le résultat suivant :
docker-ce.x86_64 3:19.03.13-3.el8 docker-ce-stable
Docker CE Stable - x86_64 54 kB/s | 3.8 kB 00:00
CentOS-8 - Extras 14 kB/s | 8.1 kB 00:00
CentOS-8 - Base 4.6 MB/s | 2.2 MB 00:00
CentOS-8 - AppStream 4.7 MB/s | 5.8 MB 00:01
Available Packages
Ensuite, installez la dernière version de Docker CE en exécutant la commande suivante :
dnf install docker-ce --nobest
Une fois le Docker installé, vérifiez la version installée avec la commande suivante :
docker --version
Vous devriez obtenir le résultat suivant :
Docker version 19.03.13, build 4484c46d9d
Pour démarrer le service Docker, exécutez la commande suivante :
systemctl start docker
Pour arrêter le service Docker, exécutez la commande suivante :
systemctl stop docker
Vous pouvez également exécuter la commande suivante pour afficher plus d'informations sur Docker :
docker info
Vous devriez voir le résultat suivant :
Si vous souhaitez supprimer le package Docker de votre système, exécutez la commande suivante :
dnf remove docker-ce
Gestion des conteneurs avec Docker
Le docker container
La commande est utilisée pour gérer le cycle de vie du conteneur. Si vous n'avez pas l'image à partir de laquelle exécuter le conteneur, le Docker ira dans le registre, téléchargez-le.
Exécuter le conteneur Docker
Utilisez la syntaxe suivante pour télécharger l'image à partir du registre Docker et créer un conteneur.
docker container run [your-image-name]
Par exemple, exécutez la commande suivante pour créer un conteneur de serveur Web Apache :
docker container run httpd
Vous devriez obtenir le résultat suivant :
Vous pouvez utiliser l'option --rm
avec la commande Docker run pour supprimer un conteneur après sa sortie.
docker container run --rm httpd
Se connecter à Docker Container Shell
Vous pouvez utiliser l'option -it
avec la commande Docker run pour créer et démarrer le conteneur Apache et l'attacher au shell bash interactif.
docker container run -it httpd /bin/bash
Vous devriez obtenir le résultat suivant :
Lancer le conteneur Docker en arrière-plan
Vous pouvez maintenant exécuter n'importe quelle commande à l'intérieur du conteneur.
Vous pouvez utiliser l'option -td
avec la commande Docker run pour créer et démarrer le conteneur Apache et le faire fonctionner.
docker container run -td httpd
Vous devriez obtenir le résultat suivant :
Configurer le nom du conteneur Docker
Vous pouvez utiliser l'option --name
avec la commande Docker run pour attribuer un nom de conteneur en utilisant la syntaxe suivante :
docker container run --name [container-name] -td [image-name]
Par exemple, créez un nouveau conteneur à partir de l'image Apache et attribuez-lui un nom apacheweb
avec la commande suivante :
docker container run --name apacheweb -td httpd
Lier le conteneur Docker sur le port spécifique
Si vous souhaitez accéder au processus de conteneur de la machine externe, vous pouvez exposer un port de conteneur au réseau externe.
Dans ce cas, vous pouvez utiliser l'option -p
avec la commande Docker pour exposer le port spécifique comme indiqué ci-dessous :
docker container run -p [host-port]:[container-port] --name [container-name] -dit [image-name]
Par exemple, créez un conteneur de serveur Web apache et exposez le port de conteneur 80 au port 8080 avec la commande suivante :
docker container run -p 8080:80 --name apacheweb -dt httpd
Vous pouvez désormais accéder au serveur Web apache exécuté dans le conteneur à l'aide de l'URL http://localhost:8080 .
Répertorier tous les conteneurs Docker
Pour répertorier tous les conteneurs en cours d'exécution et arrêtés dans votre système, exécutez la commande suivante :
docker ps -a
Vous devriez voir tous les conteneurs dans la sortie suivante :
Pour répertorier uniquement les conteneurs en cours d'exécution sur votre système, exécutez la commande suivante :
docker ps
Vous pouvez également lister le conteneur avec la commande suivante :
docker container ls
Afficher les statistiques du conteneur Docker
Pour afficher les statistiques en direct du conteneur en cours d'exécution (utilisation du processeur et de la mémoire, E/S réseau et disque) nommé apacheweb
, exécutez la commande suivante :
docker stats apacheweb
Vous devriez voir le résultat suivant :
Afficher tous les processus du conteneur Docker
Pour répertorier tous les processus en cours d'exécution dans le conteneur en cours d'exécution nommé apacheweb , exécutez la commande suivante :
docker top apacheweb
Vous devriez voir le résultat suivant :
Afficher les journaux du conteneur Docker
Pour afficher les journaux du conteneur en cours d'exécution nommé apacheweb , exécutez la commande suivante :
docker logs apacheweb
Vous devriez voir le résultat suivant :
Démarrer, arrêter et suspendre le conteneur Docker
Pour arrêter le conteneur en cours d'exécution nommé apacheweb , exécutez la commande suivante :
docker container stop apacheweb
Pour démarrer le conteneur nommé apacheweb , exécutez la commande suivante :
docker container start apacheweb
Pour mettre en pause le conteneur nommé apacheweb , exécutez la commande suivante :
docker container pause apacheweb
Redémarrer ou tuer le conteneur Docker
Pour redémarrer le conteneur en cours d'exécution nommé apacheweb , exécutez la commande suivante :
docker container restart apacheweb
Pour tuer le conteneur en cours d'exécution nommé apacheweb , exécutez la commande suivante :
docker container kill apacheweb
Attacher à un conteneur Docker déjà en cours d'exécution
Pour vous connecter au conteneur en cours d'exécution, exécutez la commande suivante :
docker container exec -it apacheweb /bin/bash
Pour exécuter n'importe quelle commande dans le conteneur en cours d'exécution, exécutez la commande suivante :
docker container exec -it apacheweb ls
Gestion des images Docker
Dans cette section, nous allons vous montrer quelques commandes les plus couramment utilisées pour gérer l'image Docker.
Télécharger l'image Docker à partir du registre
Pour télécharger ou extraire l'image du registre Docker, utilisez la syntaxe suivante :
docker pull [image-name]
Par exemple, vous pouvez extraire l'image du serveur Web Nginx du registre Docker avec la commande suivante :
docker pull nginx
Vous devriez obtenir le résultat suivant :
Télécharger l'image Docker dans le registre
Si vous souhaitez télécharger une image existante dans le registre Docker, utilisez la syntaxe suivante :
docker push [image-name]
Connectez-vous à Docker The Registry
Tout d'abord, vous devrez vous connecter au registre Docker avec la commande suivante :
docker login
Une fois connecté, exécutez la commande suivante pour obtenir l'identifiant de l'image Nginx et marquez l'image avec la commande suivante :
docker images
Sortie :
REPOSITORY TAG IMAGE ID CREATED SIZE
nginx latest f35646e83998 3 weeks ago 133MB
httpd latest 3dd970e6b110 3 weeks ago 138MB
Ajouter une balise à l'image Docker
Ensuite, taguez l'image avec la commande suivante :
docker tag f35646e83998 amaksimov/nginx
Où :
f35646e83998
est l'identifiant de l'image, amaksimov est le nom du registre Docker et nginx est le nom de l'image.
Ensuite, poussez l'image Nginx vers le registre Docker avec la commande suivante :
docker push amaksimov/nginx
Vous devriez voir le résultat suivant :
Créer une image Docker à partir du conteneur en cours d'exécution
Vous pouvez également créer une image à partir d'un conteneur existant en utilisant la syntaxe suivante :
docker commit [container-name] [new-image-name]
Par exemple, créez une image à partir du conteneur Apache, exécutez la commande suivante :
docker commit apacheweb apache-image
Pour enregistrer votre image existante dans l'archive tar en exécutant la commande suivante :
docker save apache-image > apache-image.tar
Histoire de l'image Docker
Vous pouvez imprimer l'historique de n'importe quelle image Docker avec la commande suivante :
docker history apache-image
Vous devriez obtenir le résultat suivant :
Supprimer l'image Docker
Vous pouvez supprimer n'importe quelle image Docker en utilisant la syntaxe suivante :
docker rmi [image-name]
Par exemple, si vous souhaitez supprimer l'image Apache, vous devrez arrêter le conteneur qui utilise le httpd
image :
docker container stop apacheweb
docker rm apacheweb
Tout d'abord, nous devons supprimer apache-image
image :
docker rmi apache-image
Ce n'est qu'après que nous supprimons le httpd
image avec la commande suivante :
docker rmi httpd
Au fil du temps, les images et les conteneurs créés manuellement peuvent apporter des dégâts à votre serveur. Veuillez consulter notre FAQ Docker pour savoir comment tout nettoyer.
Gestion des volumes Docker
Lorsque vous créez un nouveau conteneur, stockez des données et supprimez le conteneur, les données seront perdues. Dans ce cas, vous pouvez créer un volume sur le système hôte et démarrer un conteneur à l'aide de ce volume. Après avoir supprimé le conteneur, vous pouvez récupérer les données du volume. Vous pouvez également utiliser le volume Docker pour partager les données entre plusieurs conteneurs.
Dans cette section, nous utiliserons le plus souvent docker volume
commandes avec des exemples.
Créer un volume Docker
Pour créer un nouveau volume nommé datavolume
avec la commande suivante :
docker volume create datavolume
Répertorier tous les volumes Docker
Pour répertorier votre volume créé, exécutez la commande suivante :
docker volume ls
Vous devriez voir le résultat suivant :
Imprimer les informations sur le volume Docker
Pour imprimer plus d'informations sur le volume, exécutez la commande suivante :
docker inspect datavolume
Vous devriez voir le résultat suivant :
Monter le volume sur le conteneur Docker
Pour créer un nouveau conteneur nommé apacheweb et monter le volume de données sur le système hôte dans le répertoire /mnt du conteneur, exécutez la commande suivante :
docker run -it --name apacheweb1 --mount source=datavolume,destination=/mnt -td httpd
Volume Docker distant
Pour supprimer le volume, exécutez la commande suivante :
docker volume rm datavolume
FAQ Docker
Comment supprimer les images Docker inutilisées
Pour supprimer toutes les images Docker inutilisées, vous devez exécuter la commande suivante :
docker rmi $(docker images -a -q)
Comment supprimer tous les conteneurs Docker abandonnés
Tous les conteneurs Docker abandonnés peuvent être supprimés en exécutant la commande suivante :
docker rm $(docker ps -a -f status=exited -q)
Comment arrêter et supprimer tous les conteneurs Docker
Pour arrêter tous les conteneurs Docker, vous devez exécuter :
docker stop $(docker ps -a -q)
Pour supprimer tous les conteneurs Docker arrêtés, vous devez exécuter :
docker rm $(docker ps -a -q)
Comment supprimer toutes les images, conteneurs, volumes et réseaux Docker inutilisés
Pour supprimer toutes les ressources Docker inutilisées, vous pouvez utiliser la commande suivante :
docker system prune
Pour supprimer complètement toutes les ressources Docker (utilisées et inutilisées), exécutez la commande suivante :
docker system prune -a
Résumé
Dans le guide ci-dessus, vous avez découvert les commandes Docker les plus couramment utilisées et leur utilisation avec des exemples. J'espère que cela vous aidera à effectuer les tâches quotidiennes.