Description
Docker est la plateforme de containerisation leader, permettant de packager les applications avec toutes leurs dépendances.
Concepts fondamentaux
- 📦 Image Docker : Template immuable contenant l'application et ses dépendances
- 🚀 Conteneur : Instance en exécution d'une image
- 📄 Dockerfile : Script pour construire des images personnalisées
- 🗂️ Registry : Stockage centralisé d'images (Docker Hub, registries privés)
Exemple Dockerfile
FROM node:20-alpine
WORKDIR /app
COPY package*.json /app/
RUN npm install
COPY ./ /app
EXPOSE 3000
CMD ["npm", "start"]
Commandes essentielles
docker build -t mon-app . # Construire une image
docker run -d -p 3000:3000 mon-app # Lancer un conteneur
docker ps # Lister les conteneurs
docker stop/start/restart # Gérer les conteneurs
docker volume create nom-volume # Gérer la persistance
Docker Compose - Orchestration locale
version: '3'
services:
web:
image: mon-app
ports:
- "8080:3000"
db:
image: postgres:15
environment:
POSTGRES_PASSWORD: secure_password
Cas d'usage
- Développement local identique à production
- CI/CD pipelines
- Déploiement d'applications microservices
- Isolation des applications
Bonnes pratiques
- ✔️ Utiliser des images légères (alpine)
- ✔️ Minimiser les couches dans les Dockerfiles
- ✔️ Gérer les volumes pour la persistance
- ✔️ Utiliser docker-compose pour le développement
- ✔️ Nettoyer les images/conteneurs inutilisés
Site officiel : https://www.docker.com
Description
Portainer est une plateforme de gestion graphique pour Docker, Docker Swarm et Kubernetes.
Caractéristiques principales
- 🖥️ Interface web intuitive pour gérer Docker
- 🌍 Support multi-environnements (local, remote, Swarm, Kubernetes)
- 🐳 Gestion des conteneurs, images, volumes, réseaux
- 📦 Déploiement de stacks Docker Compose
- 🏪 Gestion des registries Docker
- 📋 Templates prédéfinis pour applications populaires
- 📊 Monitoring des ressources (CPU, mémoire)
- 📋 Logs et statistiques des conteneurs
Installation simple
docker run -d \
-p 9443:9443 \
-v /var/run/docker.sock:/var/run/docker.sock \
-v portainer_data:/data \
portainer/portainer-ce:latest
Accès : https://localhost:9443
Cas d'usage
- Gestion centralisée de multiples environnements Docker
- Alternative graphique à la CLI Docker
- Gestion des déploiements pour les équipes
- Monitoring du bien-être des conteneurs
Avantages
- ✅ Pas besoin d'accès SSH aux serveurs
- ✅ Interface conviviale pour non-experts
- ✅ Réduction du temps d'apprentissage CLI Docker
Site officiel : https://portainer.io
Description
LXC (Linux Containers) est une technologie de conteneurisation légère intégrée au noyau Linux, permettant d’exécuter plusieurs systèmes isolés (appelés conteneurs) sur un même hôte sans la couche d’abstraction de Docker.
Concepts fondamentaux
- 🧩 Conteneur LXC : Environnement isolé fonctionnant comme un système Linux complet.
- 📄 Fichier de configuration : Définit les ressources du conteneur (réseau, stockage, limites CPU/RAM…).
- ⚙️ LXD : Surcouche moderne de LXC, simplifiant la gestion des conteneurs via une API et une CLI intuitive.
- 🗂️ Templates : Images prêtes à l’emploi pour créer rapidement des conteneurs basés sur différentes distributions (Ubuntu, Debian, CentOS…).
Exemple de commandes de base
lxc-create -t ubuntu -n mon-conteneur # Créer un conteneur à partir d’un template Ubuntu
lxc-start -n mon-conteneur -d # Démarrer le conteneur en arrière-plan
lxc-attach -n mon-conteneur # Accéder au shell du conteneur
lxc-stop -n mon-conteneur # Arrêter le conteneur
lxc-destroy -n mon-conteneur # Supprimer le conteneur
Cas d’usage
- Environnements isolés pour tests ou simulations réseau
- Hébergement d’applications légères sur un seul hôte
- Alternatives à la virtualisation classique (VM)
- Infrastructure interne ou laboratoires Linux
Différences clés avec Docker
- 🧱 LXC est plus proche de la virtualisation système complète
- 🐳 Docker se concentre sur la virtualisation applicative et la portabilité
- 🧭 LXC offre un contrôle fin sur les ressources et le système d’exploitation du conteneur
Avantages
- ✅ Performances proches du bare metal
- ✅ Intégration native au noyau Linux
- ✅ Gestion flexible des ressources système
- ✅ Capacité à exécuter plusieurs distributions Linux isolées
Site officiel : https://linuxcontainers.org