Prérequis
- Un VPS ou serveur avec Ubuntu 22.04/24.04, Debian 11/12 ou AlmaLinux 9
- Accès root ou sudo
Docker permet de déployer des applications dans des conteneurs isolés. Ce guide couvre l'installation de Docker Engine et Docker Compose sur Ubuntu, Debian et AlmaLinux/Rocky Linux.
1. Supprimer les anciennes versions
# Supprimer les anciennes versions (si présentes)
apt remove docker docker-engine docker.io containerd runc -y# Supprimer les anciennes versions (si présentes)
dnf remove -y docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine podman runc2. Installer les dépendances
# Mettre à jour les paquets
apt update
# Installer les dépendances
apt install -y \
apt-transport-https \
ca-certificates \
curl \
gnupg \
lsb-release# Mettre à jour les paquets
dnf update -y
# Installer les dépendances
dnf install -y \
dnf-plugins-core \
ca-certificates \
curl \
gnupg23. Ajouter le dépôt Docker officiel
Pour Ubuntu
# Ajouter la clé GPG officielle
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Ajouter le dépôt
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | tee /etc/apt/sources.list.d/docker.list > /dev/nullPour Debian
# Ajouter la clé GPG officielle
curl -fsSL https://download.docker.com/linux/debian/gpg | gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
# Ajouter le dépôt
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" | tee /etc/apt/sources.list.d/docker.list > /dev/nullPour AlmaLinux/Rocky Linux
# Ajouter le dépôt Docker officiel
dnf config-manager --add-repo https://download.docker.com/linux/rhel/docker-ce.repo4. Installer Docker Engine
# Mettre à jour les paquets avec le nouveau dépôt
apt update
# Installer Docker
apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
# Vérifier l'installation
docker --version
docker compose version# Installer Docker
dnf install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# Vérifier l'installation
docker --version
docker compose version5. Configurer Docker pour un utilisateur non-root
Pour utiliser Docker sans sudo :
# Ajouter l'utilisateur actuel au groupe docker
usermod -aG docker $USER
# Ou pour un utilisateur spécifique
usermod -aG docker votre_utilisateur
# Appliquer les changements (ou déconnectez-vous et reconnectez-vous)
newgrp docker
# Tester sans sudo
docker run hello-worldSécurité
Les utilisateurs du groupe docker ont des privilèges équivalents à root. N'ajoutez que les utilisateurs de confiance à ce groupe.
6. Configurer le démarrage automatique
# Activer Docker au démarrage
systemctl enable docker
systemctl enable containerd
# Vérifier le statut
systemctl status docker7. Commandes Docker essentielles
# Lister les conteneurs en cours d'exécution
docker ps
# Lister tous les conteneurs (y compris arrêtés)
docker ps -a
# Lister les images
docker images
# Télécharger une image
docker pull nginx
# Lancer un conteneur
docker run -d --name mon-nginx -p 80:80 nginx
# Arrêter un conteneur
docker stop mon-nginx
# Démarrer un conteneur arrêté
docker start mon-nginx
# Supprimer un conteneur
docker rm mon-nginx
# Supprimer une image
docker rmi nginx
# Voir les logs d'un conteneur
docker logs mon-nginx
docker logs -f mon-nginx # En temps réel
# Exécuter une commande dans un conteneur
docker exec -it mon-nginx bash8. Docker Compose
Docker Compose permet de gérer des applications multi-conteneurs avec un fichier YAML.
version: '3.8'
services:
web:
image: nginx:latest
ports:
- "80:80"
volumes:
- ./html:/usr/share/nginx/html
restart: unless-stopped
db:
image: mariadb:latest
environment:
MYSQL_ROOT_PASSWORD: motdepasse_securise
MYSQL_DATABASE: mabase
MYSQL_USER: utilisateur
MYSQL_PASSWORD: motdepasse_user
volumes:
- db_data:/var/lib/mysql
restart: unless-stopped
volumes:
db_data:# Démarrer les services (en arrière-plan)
docker compose up -d
# Arrêter les services
docker compose down
# Voir les logs
docker compose logs
docker compose logs -f # En temps réel
# Reconstruire les images
docker compose build
# Mettre à jour les conteneurs
docker compose pull
docker compose up -d9. Nettoyer Docker
# Supprimer les conteneurs arrêtés
docker container prune
# Supprimer les images non utilisées
docker image prune
# Supprimer les volumes non utilisés
docker volume prune
# Supprimer les réseaux non utilisés
docker network prune
# Tout nettoyer (attention !)
docker system prune -a10. Configurer le stockage des logs
Par défaut, Docker peut générer beaucoup de logs. Limitez leur taille :
# Créer/éditer le fichier de configuration Docker
mkdir -p /etc/docker
cat > /etc/docker/daemon.json << 'EOF'
{
"log-driver": "json-file",
"log-opts": {
"max-size": "10m",
"max-file": "3"
}
}
EOF
# Redémarrer Docker
systemctl restart dockerApplications populaires à déployer
- Portainer : Interface web pour gérer Docker
- Nginx Proxy Manager : Reverse proxy avec interface graphique
- Traefik : Reverse proxy moderne
- Nextcloud : Cloud personnel
- WordPress : Blog/CMS
- GitLab : Gestion de code
- Grafana + Prometheus : Monitoring
# Créer un volume pour les données
docker volume create portainer_data
# Lancer Portainer
docker run -d \
--name portainer \
--restart=always \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
# Accéder à https://VOTRE_IP:9443Docker installé !
Docker est maintenant prêt à déployer vos applications. Consultez hub.docker.com pour trouver des images officielles.