Comment créer des conteneurs Docker sous Ubuntu

DockerBeginner
Pratiquer maintenant

Introduction

Ce tutoriel Docker complet fournit aux développeurs et aux professionnels de l'informatique des connaissances essentielles sur la technologie des conteneurs. Apprenez à configurer Docker sur Ubuntu, comprenez les concepts fondamentaux et tirez parti de la conteneurisation pour un déploiement d'applications cohérent sur différents environnements informatiques.

Docker : Les Fondamentaux

Introduction à la Technologie Docker

Docker est une plateforme puissante pour la technologie des conteneurs qui révolutionne le déploiement et la virtualisation des logiciels. En tant qu'outil open-source, Docker permet aux développeurs d'emballer, de distribuer et d'exécuter des applications de manière cohérente sur différents environnements informatiques.

Concepts Fondamentaux de Docker

Qu'est-ce que Docker ?

Docker est une technologie de virtualisation légère qui permet aux développeurs de créer, déployer et exécuter des applications à l'aide de conteneurs. Contrairement aux machines virtuelles traditionnelles, les conteneurs partagent le noyau du système hôte, ce qui les rend plus efficaces et plus rapides à démarrer.

Architecture des Conteneurs

graph TD
    A[Moteur Docker] --> B[Runtime des Conteneurs]
    A --> C[Images Docker]
    B --> D[Conteneur d'Application]
    C --> D

Composants Clés de Docker

Composant Description Rôle
Moteur Docker Environnement d'exécution Gère le cycle de vie des conteneurs
Image Docker Modèle en lecture seule Définit la configuration du conteneur
Conteneur Docker Instance exécutable Exécute l'application

Installation sous Ubuntu 22.04

## Mettre à jour l'index des paquets
sudo apt update

## Installer les dépendances
sudo apt install apt-transport-https ca-certificates curl software-properties-common

## Ajouter la clé GPG officielle de Docker
curl -fsSL | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

## Configurer le dépôt stable
echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg]  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

## Installer le moteur Docker
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io

Commandes Docker de Base

## Vérifier la version de Docker
docker --version

## Vérifier l'installation de Docker
docker run hello-world

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

## Lister tous les conteneurs
docker ps -a

Avantages de Docker

Docker offre des avantages significatifs pour le développement logiciel moderne :

  • Environnement cohérent entre le développement et la production
  • Déploiement d'applications plus rapide
  • Amélioration de l'utilisation des ressources
  • Gestion simplifiée des dépendances
  • Scalabilité et portabilité améliorées

Création d'Images Docker

Comprendre les Images Docker

Les images Docker sont des modèles en lecture seule utilisés pour créer des conteneurs. Elles contiennent le code de l'application, le runtime, les bibliothèques, les variables d'environnement et les fichiers de configuration nécessaires à l'exécution d'une application.

Notions de base sur les Dockerfile

Un Dockerfile est un document texte contenant les instructions pour la création d'une image Docker. Chaque instruction crée une nouvelle couche dans l'image.

Structure d'un Dockerfile

graph TD
    A[Image de Base] --> B[Installer les Dépendances]
    B --> C[Copier le Code de l'Application]
    C --> D[Définir les Variables d'Environnement]
    D --> E[Définir la Commande de Démarrage]

Instructions Dockerfile courantes

Instruction Rôle Exemple
FROM Spécifier l'image de base FROM ubuntu:22.04
RUN Exécuter des commandes RUN apt-get update
COPY Copier des fichiers COPY ./app /application
WORKDIR Définir le répertoire de travail WORKDIR /application
CMD Définir la commande par défaut CMD ["python", "app.py"]

Création d'une image simple d'application web Python

Dockerfile d'exemple

## Utiliser l'image runtime Python officielle comme image de base
FROM python:3.9-slim

## Définir le répertoire de travail
WORKDIR /app

## Copier le fichier requirements
COPY requirements.txt .

## Installer les dépendances
RUN pip install --no-cache-dir -r requirements.txt

## Copier le code de l'application
COPY . .

## Exposer le port
EXPOSE 5000

## Définir la commande de démarrage
CMD ["python", "app.py"]

Construction d'une image Docker

## Construire l'image avec une étiquette
docker build -t hello-world-app .

## Lister les images locales
docker images

## Exécuter l'image créée
docker run -p 5000:5000 hello-world-app

Commandes de gestion des images

## Supprimer une image spécifique
docker rmi hello-world-app

## Supprimer toutes les images non utilisées
docker image prune

## Télécharger une image depuis Docker Hub
docker pull ubuntu:22.04

Bonnes pratiques

  • Utiliser des images de base minimales
  • Minimiser le nombre de couches
  • Éviter d'installer des paquets inutiles
  • Utiliser des builds multi-étapes pour des images plus petites
  • Optimiser l'utilisation du cache de build efficacement

Gestion des Conteneurs

Vue d'ensemble du Cycle de Vie des Conteneurs

Les conteneurs Docker ont un cycle de vie défini avec plusieurs états, de la création à la terminaison. Comprendre ces états est crucial pour une gestion efficace des conteneurs.

stateDiagram-v2
    [*] --> Created
    Created --> Running
    Running --> Paused
    Paused --> Running
    Running --> Stopped
    Stopped --> Removed
    Removed --> [*]

Opérations de Base sur les Conteneurs

Commandes de Gestion des Conteneurs

Commande Fonction Exemple
docker create Créer un conteneur docker create nginx
docker start Démarrer un conteneur docker start container_id
docker stop Arrêter un conteneur en cours d'exécution docker stop container_id
docker restart Redémarrer un conteneur docker restart container_id
docker rm Supprimer un conteneur docker rm container_id

Exécution de Conteneurs

## Exécuter le conteneur en premier plan
docker run nginx

## Exécuter le conteneur en arrière-plan
docker run -d nginx

## Exécuter le conteneur avec mappage de port
docker run -p 8080:80 nginx

## Exécuter le conteneur avec un nom personnalisé
docker run --name web-server nginx

Inspection et Surveillance des Conteneurs

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

## Lister tous les conteneurs
docker ps -a

## Afficher les journaux du conteneur
docker logs container_id

## Inspecter les détails du conteneur
docker inspect container_id

## Surveiller l'utilisation des ressources du conteneur
docker stats

Réseaux de Conteneurs

## Lister les réseaux Docker
docker network ls

## Créer un réseau personnalisé
docker network create mynetwork

## Connecter un conteneur au réseau
docker network connect mynetwork container_id

Gestion Avancée des Conteneurs

Limites des Ressources des Conteneurs

## Limiter le CPU et la mémoire
docker run -d \
  --cpus="1.5" \
  --memory="512m" \
  nginx

Mise à l'échelle des Conteneurs

## Créer plusieurs instances de conteneurs
docker run -d -p 8001:80 nginx
docker run -d -p 8002:80 nginx
docker run -d -p 8003:80 nginx

Stratégies de Déploiement de Conteneurs

Gestion des Données Persistantes

## Créer un volume
docker volume create myvolume

## Monter le volume dans le conteneur
docker run -v myvolume:/app/data nginx

Configuration de l'Environnement

## Définir des variables d'environnement
docker run -e DATABASE_URL=localhost nginx

Résumé

Docker révolutionne le développement logiciel en permettant la création de conteneurs légers et portables qui simplifient le déploiement des applications. En maîtrisant les composants fondamentaux de Docker, le processus d'installation et les commandes de base, les développeurs peuvent créer des environnements logiciels plus efficaces, évolutifs et reproductibles avec un minimum de surcharge et un maximum de flexibilité.