Docker
Docker est une plateforme permettant de créer, déployer et exécuter des applications dans des conteneurs.
À propos de Docker
Docker simplifie le développement et le déploiement d’applications en offrant :
- Isolation complète : chaque conteneur fonctionne indépendamment, sans interférer avec les autres applications ou le système hôte.
- Portabilité : un conteneur fonctionne de la même manière sur tous les systèmes (Linux, Windows, macOS).
- Reproductibilité : les environnements de développement et de production sont identiques.
- Efficacité : les conteneurs partagent le même noyau OS, ce qui les rend plus légers que les machines virtuelles.
Docker est largement utilisé pour les applications web, microservices, bases de données, serveurs API, et même des applications desktop.
Installation
Sur Linux (Debian/Ubuntu) :
1sudo apt update2sudo apt install docker.io3sudo systemctl start docker4sudo systemctl enable dockerVérification de l’installation :
1docker --versionInstaller Docker Compose pour gérer plusieurs conteneurs :
1sudo apt install docker-compose2docker-compose --versionConcepts clés
- Image : modèle de conteneur, construit à partir d’un fichier
Dockerfile. - Conteneur : instance en cours d’exécution d’une image.
- Dockerfile : fichier de configuration pour créer une image Docker.
- Docker Hub : registre d’images Docker publiques ou privées.
Exemple de Dockerfile pour une application PHP/Laravel
1# Utiliser l’image PHP officielle avec Apache 2FROM php:8.2-apache 3 4# Installer les extensions nécessaires 5RUN docker-php-ext-install pdo pdo_mysql 6 7# Copier le code de l’application 8COPY . /var/www/html 9 10# Installer Composer11COPY --from=composer:latest /usr/bin/composer /usr/bin/composer12 13# Définir les permissions14RUN chown -R www-data:www-data /var/www/html15 16EXPOSE 80Exemple de docker-compose.yml
Pour lancer plusieurs services (Laravel + MySQL) :
1version: '3.8' 2 3services: 4 app: 5 build: . 6 ports: 7 - "8000:80" 8 volumes: 9 - .:/var/www/html10 depends_on:11 - db12 13 db:14 image: mysql:8.015 environment:16 MYSQL_ROOT_PASSWORD: secret17 MYSQL_DATABASE: laravel18 MYSQL_USER: laravel19 MYSQL_PASSWORD: secret20 ports:21 - "3306:3306"app: conteneur pour l’application Laravel.db: conteneur MySQL.volumes: synchronisation du code local avec le conteneur.depends_on: garantit que le conteneurdbest démarré avantapp.
Commandes Docker utiles
- Lister les conteneurs actifs :
1docker ps- Lancer un conteneur :
1docker run -it --name mon_app php:8.2 bash- Arrêter un conteneur :
1docker stop mon_app- Supprimer un conteneur :
1docker rm mon_app- Construire une image à partir d’un Dockerfile :
1docker build -t mon_image .- Lancer les services définis dans
docker-compose.yml:
1docker-compose up -dBonnes pratiques
- Séparer les services en conteneurs distincts (app, base de données, cache, queue, etc.).
- Utiliser volumes pour conserver les données persistantes.
- Construire des images légères et sécurisées.
- Automatiser les builds et déploiements avec CI/CD.
- Versionner le
Dockerfileet ledocker-compose.ymlavec le code source.
Docker est un outil incontournable pour le développement moderne, permettant de créer des environnements isolés, reproductibles et portables pour toutes les applications. Il facilite le travail en équipe et simplifie le déploiement sur différents environnements, du développement local à la production.