# Aucun code pour cette étape
Pratique :
Familiarisez-vous avec les concepts de base de Docker et son importance dans le développement et le déploiement d'applications modernes.
bash
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io
`` # Vérifiez l'installation avec:
docker --version
Pratique :
Installez Docker sur votre système en suivant les instructions correspondant à votre OS. Vérifiez ensuite que l'installation a réussi en exécutant 'docker --version' dans votre terminal.
# Télécharger une image
docker pull nginx
# Lancer un conteneur
docker run -d -p 80:80 nginx
# Construire une image à partir d'un Dockerfile
docker build -t mon-app .
# Créer un volume
docker volume create mon-volume
Pratique :
Pour chaque concept (image, conteneur, Dockerfile, volume), essayez d'expliquer son rôle dans vos propres mots. Ensuite, utilisez la commande 'docker pull' pour télécharger une image, comme nginx, et lancez un conteneur basé sur cette image.
# Lancer un conteneur en mode détaché
docker run -d --name mon-nginx -p 8080:80 nginx
# Lister les conteneurs en cours d'exécution
docker ps
# Arrêter un conteneur
docker stop mon-nginx
# Supprimer un conteneur
docker rm mon-nginx
Pratique :
Lancez un conteneur nginx, vérifiez qu'il est en cours d'exécution, puis arrêtez-le et supprimez-le. Utilisez les commandes docker ps, docker stop, et docker rm.
# Exemple de Dockerfile
FROM node:14
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
EXPOSE 3000
CMD ["node", "app.js"]
# Construire l'image
docker build -t mon-app:v1 .
Pratique :
Créez un simple Dockerfile pour une application Node.js, construisez l'image, puis lancez un conteneur basé sur cette image.
# Créer un volume
docker volume create mon-volume
# Lancer un conteneur avec un volume monté
docker run -d --name mon-app -v mon-volume:/app/data mon-app:v1
Pratique :
Créez un volume Docker, puis lancez un conteneur en montant ce volume. Ajoutez des données dans le volume et vérifiez qu'elles persistent après le redémarrage du conteneur.
# Créer un réseau
docker network create mon-reseau
# Lancer des conteneurs sur le réseau
docker run -d --name app1 --network mon-reseau mon-app:v1
docker run -d --name app2 --network mon-reseau mon-app:v1
Pratique :
Créez un réseau Docker, lancez deux conteneurs sur ce réseau, puis vérifiez qu'ils peuvent communiquer entre eux en utilisant leurs noms comme noms d'hôte.
# Exemple de docker-compose.yml
version: '3'
services:
web:
build: .
ports:
- "5000:5000"
redis:
image: "redis:alpine"
# Lancer l'application
docker-compose up -d
Pratique :
Créez un fichier docker-compose.yml pour une application web simple avec une base de données. Utilisez docker-compose pour lancer l'application et vérifiez que les services communiquent correctement.
# Exemple de Dockerfile multi-stage
FROM node:14 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm install
COPY . .
RUN npm run build
FROM nginx:alpine
COPY --from=builder /app/build /usr/share/nginx/html
Pratique :
Créez un Dockerfile multi-stage pour une application frontend, construisez l'image, et comparez sa taille avec une version non optimisée.
# Initialiser un swarm
docker swarm init
# Déployer un service
docker service create --replicas 3 --name mon-service mon-app:v1
Pratique :
Initialisez un swarm Docker sur votre machine locale, déployez un service avec plusieurs réplicas, puis vérifiez l'état du service et des réplicas.
# Analyser une image pour les vulnérabilités
docker scan mon-app:v1
# Utiliser des secrets Docker
echo "mon_secret" | docker secret create app_secret -
docker service create --name mon-service --secret app_secret mon-app:v1
Pratique :
Effectuez une analyse de sécurité sur une de vos images Docker. Créez et utilisez un secret Docker dans un service.
# Voir les logs d'un conteneur
docker logs mon-conteneur
# Voir les statistiques d'utilisation des ressources
docker stats
Pratique :
Lancez un conteneur qui génère des logs, puis utilisez les commandes Docker pour visualiser ces logs et les statistiques d'utilisation des ressources du conteneur.
# Structure du projet
./
├── frontend/
│ ├── Dockerfile
│ └── ...
├── backend/
│ ├── Dockerfile
│ └── ...
├── docker-compose.yml
# Contenu du docker-compose.yml
version: '3'
services:
frontend:
build: ./frontend
ports:
- "80:80"
depends_on:
- backend
backend:
build: ./backend
environment:
- DB_HOST=db
depends_on:
- db
db:
image: postgres:13
volumes:
- db-data:/var/lib/postgresql/data
volumes:
db-data:
# Déployer l'application
docker-compose up -d
# Vérifier le statut
docker-compose ps
# Voir les logs
docker-compose logs
# Mettre à jour un service
docker-compose up -d --no-deps --build backend
# Arrêter l'application
docker-compose down
Pratique :
Suivez les étapes du code exemple pour déployer une application web complète avec Docker Compose. Créez les Dockerfiles nécessaires pour le frontend et le backend, puis utilisez le fichier docker-compose.yml fourni pour orchestrer le déploiement. Testez l'application, vérifiez les logs, et essayez de mettre à jour l'un des services. Réfléchissez à la façon dont Docker facilite le déploiement et la gestion d'une application multi-services.