Comment installer Docker et Docker Compose sur Linux –
Docker vous offre tout ce dont vous avez besoin pour créer et exécuter des conteneurs sur votre système Linux. Les conteneurs sont similaires aux machines virtuelles légères. Ils vous permettent de créer des images d’applications portables qui s’exécutent à l’aide du noyau du système d’exploitation de votre hôte.
Vous pouvez utiliser Docker sur les plates-formes Debian, Fedora, CentOS et Raspbian. Les dérivés de ces distributions fonctionneront également. Docker fournit des versions x86 / x64 et ARM pour la plupart des plates-formes prises en charge. Nous utilisons un système Debian avec le apt
gestionnaire de paquets pour ce guide. Des instructions spécifiques à d’autres distributions peuvent être trouvées dans la documentation Docker.
Docker Compose vous permet de créer et d’exécuter des piles de plusieurs conteneurs. Vous créez un fichier YAML qui configure les conteneurs de votre application. Vous pouvez ensuite utiliser une seule commande pour démarrer tous les conteneurs et les lier entre eux. Compose vous aide à séparer les composants de votre pile en services conteneurisés individuels.
Compose est distribué indépendamment de Docker. Installez Docker avant d’ajouter Compose – sinon, Compose ne pourra pas fonctionner.
Sommaire
Installer Docker
Vous pouvez utiliser le gestionnaire de packages de votre système d’exploitation pour installer la dernière version de Docker. Vous devrez ajouter le référentiel de Docker, mettre à jour vos listes de packages, puis installer Docker.
Debian / Ubuntu
Commencez par ajouter les dépendances nécessaires au processus d’installation:
sudo apt-get update sudo apt-get install apt-transport-https ca-certificates curl gnupg lsb-release
Ensuite, ajoutez la clé GPG du référentiel de Docker:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
Ajoutez le référentiel à vos sources et mettez à jour vos listes de packages:
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update
Vous pouvez maintenant installer Docker:
sudo apt-get install docker-ce docker-ce-cli containerd.io
Feutre
Ajouter le référentiel de packages de Docker:
sudo dnf -y install dnf-plugins-core sudo dnf config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
Installez Docker:
sudo dnf install docker-ce docker-ce-cli containerd.io
CentOS
Ajouter le référentiel de packages de Docker:
sudo yum -y install yum-utils sudo yum-config-manager --add-repo https://download.docker.com/linux/fedora/docker-ce.repo
Installez Docker:
sudo yum install docker-ce docker-ce-cli containerd.io
Utilisation de Docker sans Sudo
Le démon Docker s’exécute comme root
. Vous devez généralement préfixer les commandes Docker avec sudo
. Cela peut devenir fastidieux si vous utilisez souvent Docker. Vous ajouter à la docker
group vous permettra d’utiliser Docker sans sudo
.
sudo usermod -aG docker $USER
Une fois que vous êtes dans le groupe, déconnectez-vous et reconnectez-vous. Sinon, exécutez le newgrp docker
commande pour vous connecter immédiatement au groupe mis à jour. Vous devriez maintenant pouvoir abandonner sudo
à partir des commandes Docker.
Test de votre installation Docker
Maintenant que Docker est installé, il est temps de tester son fonctionnement! Vous pouvez utiliser le minimum hello-world
image.
docker run hello-world:latest
Vous devriez voir apparaître quelques lignes de sortie dans votre terminal. Docker recherchera d’abord le hello-world:latest
image sur votre machine. Comme elle n’existera pas, l’image sera ensuite extraite du référentiel Docker Hub.
Une fois l’image extraite, un nouveau conteneur sera créé à partir de celle-ci. Le conteneur est configuré pour émettre un message de base «bonjour le monde», puis quitter. Si vous voyez le texte, votre installation Docker fonctionne!
Gérer le service Docker
Vous pouvez vérifier si Docker fonctionne en inspectant son service avec systemctl
. Il y a deux éléments à considérer, docker
et containerd
. docker
est le démon Docker Engine auquel la CLI envoie des commandes. containerd
est le runtime sous-jacent qui exécute réellement vos conteneurs.
sudo systemctl status docker.service sudo systemctl status containerd.service
Vous pouvez gérer les démons comme tous les autres services de votre système. Utiliser systemctl stop
si vous souhaitez arrêter temporairement Docker et libérer les ressources système utilisées par vos conteneurs:
sudo systemctl stop docker.service
Vous pouvez redémarrer le service avec systemctl start
.
Ajout de Docker-Compose
docker-compose
est un binaire distinct qu’il est préférable de télécharger directement à partir des versions GitHub du projet. Les distributions Linux les plus populaires incluent Compose dans leurs gestionnaires de paquets, mais il peut être considérablement obsolète.
Rendez-vous sur la page des versions de Docker Compose et notez le dernier numéro de version. Au moment de la rédaction de cet article, c’était 1.29.0
.
Remplacez la version que vous voyez au lieu de 1.29.0
dans la commande ci-dessous. Cela téléchargera le bon binaire pour votre système et le déposera dans /usr/local/bin
.
sudo curl -L "https://github.com/docker/compose/releases/download/1.29.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Ensuite, rendez le fichier exécutable:
sudo chmod +x /usr/local/bin/docker-compose
Vous pourrez désormais utiliser le docker-compose
commande dans votre terminal. Essayez de courir docker-compose --version
vérifier.
Création d’un fichier Docker-Compose simple
Utiliser docker-compose
vous devez créer un docker-compose.yml
déposer. Cela décrit les conteneurs qui composent la pile de votre application. Vous pouvez spécifier des liaisons de port, des variables d’environnement, des réseaux et des volumes qui sont utilisés par vos conteneurs.
Conteneurs déclarés dans le même docker-compose.yml
Le fichier fait automatiquement partie de la même pile. Ils sont reliés entre eux dans un réseau Docker, afin qu’ils puissent communiquer entre eux en utilisant leur docker-compose.yml
noms de service en tant que noms d’hôte.
Voici un simple docker-compose.yml
pour exécuter un serveur Web PHP et une base de données MySQL:
version: "3" services: app: image: php8.0-apache environment: - MYSQL_SERVER=mysql - MYSQL_USERNAME=root - MYSQL_PASSWORD=example ports: - ${PORT:-80}:80 restart: unless-stopped mysql: image: mysql:8.0 expose: - 3306 environment: - MYSQL_ROOT_PASSWORD volumes: - mysql:/var/lib/mysql restart: unless-stopped volumes: mysql:
Vous pouvez lancer les deux services en exécutant docker-compose up -d
. Vous verrez les deux images extraites de Docker Hub. Les conteneurs seront alors démarrés. Vous pouvez les arrêter tous les deux en utilisant docker-compose stop
. Utiliser docker-compose down
pour retirer les conteneurs.
L’exemple de fichier YAML présente quelques fonctionnalités de Docker Compose. Les conteneurs sont définis sous le services
nœud, avec chaque conteneur déclarant son Docker image
. Vous pouvez passer des variables d’environnement shell dans des conteneurs (environments
) et configurez les liaisons de port Docker (ports
). Les variables d’environnement peuvent être interpolées en chaînes à l’aide du ${VARIABLE:-DEFAULT}
syntaxe. Si la variable n’est pas définie dans votre shell, DEFAULT
sera utilisé comme valeur à la place. Vous pouvez en savoir plus sur Docker Compose dans notre guide dédié.
Résumé
Vous pouvez facilement installer Docker à l’aide des gestionnaires de packages des distributions Linux populaires. Ajoutez le référentiel Docker, puis installez docker-ce
, docker-ce-cli
et containerd.io
. Ces composants vous offrent tout ce dont vous avez besoin pour créer et exécuter vos conteneurs.
Une fois que vous êtes opérationnel, vous pouvez rédiger un Dockerfile
et utilise docker build -t my-app:latest .
pour le construire. Ensuite, utilisez docker run my-app:latest
pour démarrer votre conteneur.
Docker-Compose est une couche d’abstraction supplémentaire qui facilite l’exécution d’une «pile» de plusieurs conteneurs. Avec Compose, vous n’avez pas besoin d’exécuter manuellement plusieurs commandes en série. Vous pouvez écrire un fichier YAML déclaratif et utiliser docker-compose up
pour démarrer tous vos conteneurs à l’unisson.