Découverte de Docker

Découverte de Docker

Découverte et prise en main de Docker, la plateforme de conteneurisation permettant de déployer et gérer des applications légère et efficace.
Publié le
Statut
Terminé

Présentation du projet

Ce projet consiste à découvrir Docker, une plateforme de conteneurisation qui permet d’empaqueter des applications et leurs dépendances dans des conteneurs légers, portables et isolés.

Objectifs

  • Comprendre le concept de conteneurisation
  • Installer Docker sur Linux
  • Manipuler les images et conteneurs Docker
  • Comprendre les différences avec la virtualisation

Contexte technique

Problématique

Le déploiement d’applications rencontre souvent des problèmes :

  • “Ça marche sur ma machine” mais pas en production
  • Dépendances conflictuelles entre applications
  • Configuration différente entre environnements
  • Lourdeur des machines virtuelles
  • Gaspillage de ressources

Solution mise en œuvre

Docker résout ces problèmes en :

  • Isolant les applications dans des conteneurs
  • Normalisant l’environnement d’exécution
  • Partageant le noyau de l’hôte (légèreté)
  • Portabilité entre développement et production
  • Déploiement rapide (secondes vs minutes pour VM)

Réalisation technique

Installation de Docker

BASH
# Mise à jour du système (Debian/Ubuntu)
sudo apt update && sudo apt upgrade -y

# Installation des dépendances
sudo apt install ca-certificates curl

# Ajout du dépôt Docker officiel
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc && sudo chmod a+r /etc/apt/keyrings/docker.asc


sudo tee /etc/apt/sources.list.d/docker.sources <<EOF
Types: deb
URIs: https://download.docker.com/linux/debian
Suites: $(. /etc/os-release && echo "$VERSION_CODENAME")
Components: stable
Signed-By: /etc/apt/keyrings/docker.asc
EOF

# Installation de Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Vérification de l'installation
docker --version

# Ajout de l'utilisateur au groupe docker
sudo usermod -aG docker $USER
Cliquez pour développer et voir plus

Premiers pas avec Docker

Test d’installation :

BASH
# Exécuter le conteneur de test
docker run hello-world
Cliquez pour développer et voir plus

Test Installation - Résultat

Commandes de base :

BASH
# Lister les conteneurs en cours d'exécution
docker ps

# Lister tous les conteneurs (même arrêtés)
docker ps -a

# Lister les images
docker images
Cliquez pour développer et voir plus

Résultat - Docker PS

Lancer un conteneur nginx :

BASH
# Télécharger une image
docker pull nginx

# Lancer un conteneur Nginx
docker run -d -p 8080:80 --name mon-nginx nginx

# Voir les logs d'un conteneur
docker logs mon-nginx

# Arrêter un conteneur
docker stop mon-nginx

# Supprimer un conteneur
docker rm mon-nginx

# Supprimer une image
docker rmi nginx
Cliquez pour développer et voir plus

Nginx Fonctionnel

Résultats obtenus

✅ Docker installé et configuré
✅ Manipulation des images et conteneurs maîtrisée
✅ Concepts de conteneurisation compris
✅ Gains de performance et portabilité constatés

Compétences développées

  • Compréhension de la conteneurisation
  • Installation et configuration de Docker
  • Manipulation d’images et conteneurs
  • Écriture de Dockerfiles optimisés
  • Utilisation de Docker Compose
  • Gestion des volumes et réseaux Docker
  • Bonnes pratiques de sécurité

Docker vs Virtualisation

AspectDocker (Conteneurs)VM (Machines Virtuelles)
Démarrage< 1 seconde30-60 secondes
TailleMo (partage noyau)Go (OS complet)
PerformanceNative (quasi)Overhead hyperviseur
IsolationProcessusMatérielle
PortabilitéExcellenteBonne
DensitéTrès élevéeMoyenne

Architecture Docker

PLAINTEXT
┌─────────────────────────────────────┐
│      Application Conteneur 1         │
│  ┌──────────┐  ┌──────────────┐    │
│  │ App Code │  │ Dependencies │    │
│  └──────────┘  └──────────────┘    │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│         Docker Engine               │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│      Système d'exploitation         │
└─────────────────────────────────────┘
┌─────────────────────────────────────┐
│      Infrastructure (serveur)       │
└─────────────────────────────────────┘
Cliquez pour développer et voir plus

Commandes avancées

BASH
# Inspecter un conteneur
docker inspect mon-conteneur

# Exécuter une commande dans un conteneur
docker exec -it mon-conteneur bash

# Copier des fichiers vers/depuis un conteneur
docker cp fichier.txt mon-conteneur:/app/

# Voir l'utilisation des ressources
docker stats

# Nettoyer les ressources inutilisées
docker system prune -a
Cliquez pour développer et voir plus

Points clés d’apprentissage

  • Les conteneurs partagent le noyau de l’OS hôte (plus légers que les VM)
  • Les images Docker sont construites en couches (layers) pour optimisation
  • Le layering permet le cache et réduit les temps de build
  • Les données dans un conteneur sont éphémères (utiliser des volumes pour persistance)
  • Docker Compose simplifie la gestion d’applications multi-conteneurs
  • Les conteneurs sont immuables : ne pas modifier un conteneur en cours, reconstruire l’image

Commencer la recherche

Saisissez des mots-clés pour rechercher des articles

↑↓
ESC
⌘K Raccourci