Comment configurer des conteneurs Docker sur Ubuntu

DockerDockerBeginner
Pratiquer maintenant

💡 Ce tutoriel est traduit par l'IA à partir de la version anglaise. Pour voir la version originale, vous pouvez cliquer ici

Introduction

Ce tutoriel Docker complet fournit aux développeurs et aux professionnels de l'informatique les compétences essentielles pour comprendre la technologie de conteneurisation. En explorant les concepts fondamentaux, l'architecture et les stratégies de mise en œuvre pratiques de Docker, les apprenants acquerront des connaissances pratiques pour rationaliser le déploiement des applications et améliorer les flux de travail de développement logiciel.

Notions de base Docker

Introduction à Docker

Docker est une plateforme puissante de conteneurisation, révolutionnant l'emballage et le déploiement des logiciels. En tant que technologie de conteneurisation leader, Docker permet aux développeurs de créer, déployer et exécuter des applications de manière cohérente sur différents environnements informatiques.

Concepts fondamentaux de la conteneurisation

La conteneurisation permet de regrouper les applications avec toutes leurs dépendances, garantissant des performances uniformes sur différents systèmes. Contrairement aux machines virtuelles traditionnelles, les conteneurs partagent le noyau du système hôte, ce qui les rend légers et efficaces.

graph TD A[Code de l'application] --> B[Conteneur Docker] B --> C[Déploiement cohérent] B --> D[Environnement isolé]

Architecture Docker

Composant Description Fonction
Démon Docker Service en arrière-plan Gère les objets Docker
Client Docker Interface en ligne de commande Envoie des commandes au démon Docker
Registre Docker Stockage des images Stocke et distribue les images Docker

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 Docker
echo "deb [arch=$(dpkg --print-architecture) 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 Docker
docker --version

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

## Lister les images disponibles
docker images

## Exécuter un conteneur
docker run -it ubuntu:latest /bin/bash

Principaux avantages de Docker

La conteneurisation via Docker offre des avantages significatifs :

  • Environnement cohérent entre le développement et la production
  • Déploiement rapide des applications
  • Utilisation efficace des ressources
  • Gestion simplifiée des dépendances
  • Évolutivité et portabilité améliorées

Cycle de vie des conteneurs

États et gestion des conteneurs

Les conteneurs Docker évoluent à travers plusieurs états au cours de leur cycle de vie, de la création à la terminaison. Comprendre ces états est crucial pour une gestion et un déploiement efficaces des conteneurs.

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

Création et initialisation des conteneurs

## Télécharger l'image de base
docker pull ubuntu:latest

## Créer et démarrer un conteneur
docker run -d --name mycontainer ubuntu:latest

## Exécuter un conteneur avec un terminal interactif
docker run -it ubuntu:latest /bin/bash

Commandes de gestion des conteneurs

Commande Fonction Exemple
docker create Créer un nouveau conteneur docker create ubuntu:latest
docker start Démarrer un conteneur arrêté docker start mycontainer
docker stop Arrêter un conteneur en cours d'exécution docker stop mycontainer
docker restart Redémarrer un conteneur docker restart mycontainer
docker pause Mettre en pause les processus du conteneur docker pause mycontainer
docker unpause Définir le conteneur en cours d'exécution docker unpause mycontainer

Stratégies de déploiement des conteneurs

## Déployer plusieurs instances de conteneurs
docker run -d --name web1 nginx
docker run -d --name web2 nginx
docker run -d --name web3 nginx

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

Mise à l'échelle des conteneurs avec Docker Compose

version: "3"
services:
  webapp:
    image: nginx
    deploy:
      replicas: 3

Gestion des ressources

## Limiter les ressources du conteneur
docker run -d --cpus=0.5 --memory=512m nginx

Suppression des conteneurs

## Supprimer un conteneur arrêté
docker rm mycontainer

## Supprimer un conteneur en cours d'exécution de force
docker rm -f mycontainer

## Supprimer tous les conteneurs arrêtés
docker container prune

Bonnes pratiques pour les conteneurs

Optimisation de Dockerfile

## Utiliser une balise d'image spécifique
FROM ubuntu:22.04

## Minimiser le nombre de couches
RUN apt-get update \
 && apt-get install -y python3 \
 && rm -rf /var/lib/apt/lists/*

## Utiliser des builds multi-étapes
FROM python:3.9-slim
COPY --from=builder /app /app

Stratégies de surveillance des conteneurs

graph TD A[Surveillance des conteneurs] --> B[Utilisation des ressources] A --> C[Métriques de performance] A --> D[Journalisation]

Suivi des métriques de performance

Métrique Commande Objectif
Utilisation du processeur docker stats Surveiller la consommation du processeur
Mémoire docker top Suivre l'allocation de mémoire
Réseau docker network inspect Analyser les performances réseau

Bonnes pratiques de sécurité

## Exécuter les conteneurs avec des privilèges minimaux
docker run --read-only --tmpfs /tmp nginx

## Limiter les capacités du conteneur
docker run --cap-drop ALL --cap-add NET_BIND_SERVICE nginx

Vérifications d'intégrité des conteneurs

HEALTHCHECK --interval=5m --timeout=3s \
 CMD curl -f || exit 1

Journalisation et dépannage

## Inspecter les journaux du conteneur
docker logs mycontainer

## Surveillance des journaux en temps réel
docker logs -f mycontainer

## Inspection détaillée du conteneur
docker inspect mycontainer

Gestion des ressources

## Définir les contraintes de ressources
docker run -d \
  --cpus=1 \
  --memory=512m \
  --memory-reservation=256m \
  nginx

Principes d'orchestration des conteneurs

version: "3"
services:
  webapp:
    image: myapp
    deploy:
      replicas: 3
      restart_policy:
        condition: on-failure

Résumé

Docker révolutionne le développement logiciel en offrant des environnements de conteneurs légers, cohérents et portables. Ce tutoriel vous a fourni les compétences fondamentales pour installer Docker, gérer les conteneurs et tirer parti des technologies de conteneurisation efficacement sur différentes plateformes informatiques. En maîtrisant ces techniques, les développeurs peuvent améliorer la fiabilité, la scalabilité et l'efficacité du déploiement des applications.