Guide complet pour créer et gérer des images Docker sur Ubuntu | Installation, optimisation et dépannage

目次

1. Introduction

What is Docker?

Docker est une plateforme qui utilise la virtualisation basée sur les conteneurs pour développer, distribuer et exécuter des applications de manière efficace. Contrairement aux machines virtuelles (VM) traditionnelles, les conteneurs partagent le noyau du système d’exploitation hôte, ce qui permet des temps de démarrage plus rapides et une consommation de ressources moindre.

Benefits of Using Docker on Ubuntu

Ubuntu est l’une des distributions Linux hautement compatible avec Docker. Les principaux avantages incluent :

  • Official Support: Docker prend officiellement en charge Ubuntu, et l’installation est facile via le dépôt officiel.
  • Stable Package Management: Le gestionnaire de paquets APT d’Ubuntu facilite la gestion des versions de Docker.
  • Extensive Community Support: Ubuntu possède une vaste communauté d’utilisateurs à l’échelle mondiale, ce qui facilite la recherche de solutions lors du dépannage.

What You Will Learn in This Article

Cet article vous guidera à travers les sujets suivants, étape par étape :

  1. Comment installer Docker sur Ubuntu
  2. Opérations de base sur les images Docker
  3. Création d’images personnalisées avec Dockerfile
  4. Configuration de l’environnement linguistique japonais dans un conteneur Ubuntu
  5. Optimisation et réduction de la taille des images Docker
  6. Développement d’applications dans un conteneur Ubuntu
  7. Erreurs courantes et solutions de dépannage

Ce guide est utile tant pour les débutants que pour les utilisateurs avancés, n’hésitez pas à l’utiliser comme référence.

2. Installation de Docker sur Ubuntu

Installation de Docker à l’aide du dépôt officiel

Sur Ubuntu, vous pouvez installer Docker facilement en utilisant le dépôt officiel. Suivez les étapes ci-dessous pour le configurer.

1. Supprimer les paquets Docker existants

Ubuntu fournit un paquet appelé docker.io par défaut, mais il peut s’agir d’une version obsolète. Il est recommandé de le supprimer d’abord.

sudo apt remove docker docker-engine docker.io containerd runc

2. Installer les paquets requis

Avant d’installer Docker, installez les paquets de dépendances nécessaires.

sudo apt update
sudo apt install -y apt-transport-https ca-certificates curl software-properties-common

3. Ajouter le dépôt officiel de Docker

Ajoutez la clé GPG officielle de Docker et configurez le dépôt.

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

4. Installer Docker

Une fois le dépôt ajouté, installez Docker.

sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io

5. Vérifier l’installation

Pour vérifier que Docker a été installé correctement, affichez les informations de version.

docker --version

Configuration initiale après l’installation

1. Démarrer et activer le service Docker

Démarrez le service Docker et configurez-le pour qu’il s’exécute automatiquement au démarrage du système.

sudo systemctl start docker
sudo systemctl enable docker

2. Autoriser les utilisateurs non root à utiliser Docker

Par défaut, seul l’utilisateur root peut exécuter Docker. Pour permettre à un utilisateur ordinaire d’utiliser les commandes Docker, ajoutez l’utilisateur au groupe docker.

sudo usermod -aG docker $USER

Pour appliquer les modifications, déconnectez-vous puis reconnectez-vous.

3. Tester Docker

Exécutez le conteneur hello-world pour vérifier que Docker fonctionne correctement.

docker run hello-world

Si vous voyez le message « Hello from Docker ! », l’installation a réussi.

3. Opérations de base avec les images Docker

Qu’est‑ce qu’une image Docker ?

Une image Docker sert de modèle pour créer des conteneurs. En utilisant une image Docker basée sur Ubuntu, vous pouvez rapidement configurer un environnement Ubuntu à l’intérieur d’un conteneur.

Téléchargement d’images Ubuntu depuis Docker Hub

Docker Hub propose une vaste collection d’images Docker officielles. Pour télécharger une image Ubuntu, utilisez la commande suivante :

docker pull ubuntu

Démarrage et arrêt des conteneurs

Vous pouvez démarrer un conteneur en utilisant l’image Ubuntu téléchargée avec la commande suivante :

docker run -it ubuntu bash

Cette commande ouvre un shell à l’intérieur du conteneur Ubuntu, vous permettant d’interagir directement avec lui.

Liste des conteneurs en cours d’exécution

Pour vérifier quels conteneurs sont actuellement en cours d’exécution, utilisez cette commande :

docker ps

Pour afficher tous les conteneurs, y compris ceux arrêtés, ajoutez l’option -a :

docker ps -a

Arrêt et suppression des conteneurs

Pour arrêter un conteneur en cours d’exécution, utilisez la commande suivante :

docker stop [container ID or name]

Pour supprimer un conteneur inutile, utilisez cette commande :

docker rm [container ID or name]

Gestion des images Docker

Pour lister toutes les images Docker téléchargées, utilisez la commande suivante :

docker images

Pour supprimer une image inutilisée, utilisez cette commande :

docker rmi [image ID]

4. Créer des images Docker personnalisées avec Dockerfile

Qu’est-ce qu’un Dockerfile ?

Un Dockerfile est un fichier de configuration utilisé pour créer des images Docker. En définissant des instructions spécifiques dans un Dockerfile, vous pouvez créer des images Docker personnalisées adaptées à vos besoins. Cela aide à standardiser les environnements de développement et à inclure les paquets nécessaires dans l’image.

Syntaxe de base d’un Dockerfile

Un Dockerfile comprend généralement les commandes clés suivantes :

CommandDescription
FROMSpécifie l’image de base
RUNExécute des commandes pour construire l’image
COPYCopie des fichiers dans le conteneur
WORKDIRDéfinit le répertoire de travail
CMDDéfinit la commande par défaut à exécuter lorsque le conteneur démarre
ENTRYPOINTSpécifie la commande principale exécutée lorsque le conteneur s’exécute.

Création d’une image Docker personnalisée basée sur Ubuntu

Suivez ces étapes pour créer une image Docker personnalisée basée sur Ubuntu.

1. Créer un répertoire de travail

Tout d’abord, créez un nouveau répertoire de projet et accédez-y.

mkdir my-ubuntu-image
cd my-ubuntu-image

2. Créer un Dockerfile

Dans le répertoire, créez un Dockerfile et ajoutez le contenu suivant :

# Use the official Ubuntu base image
FROM ubuntu:latest

# Maintainer information (optional)
LABEL maintainer="your-email@example.com"

# Update package lists and install basic tools
RUN apt update && apt install -y curl vim git

# Set the working directory
WORKDIR /workspace

# Default command executed when the container starts
CMD ["bash"]

3. Construire l’image Docker

Utilisez la commande suivante pour construire l’image personnalisée à partir du Dockerfile.

docker build -t my-ubuntu-image .

L’option -t attribue un nom à l’image.

4. Vérifier l’image construite

Vérifiez la liste des images disponibles pour vous assurer que la nouvelle image a été créée avec succès.

docker images

5. Exécuter un conteneur à partir de l’image personnalisée

Démarrez un conteneur en utilisant l’image personnalisée nouvellement créée.

docker run -it my-ubuntu-image

Ce conteneur doit inclure des outils comme curl et vim comme spécifié dans le Dockerfile.

5. Configuration de l’environnement linguistique japonais dans un conteneur Ubuntu

Par défaut, l’image Docker Ubuntu est configurée en anglais. Si vous devez utiliser le japonais, des configurations supplémentaires sont nécessaires.

Configuration de la locale japonaise

Pour activer l’affichage et la saisie japonais dans un conteneur Ubuntu, installez les packs de langue nécessaires.

1. Installer les paquets requis

apt update
apt install -y language-pack-ja locales

2. Configurer la locale

Définissez la locale et appliquez les paramètres.

locale-gen ja_JP.UTF-8
update-locale LANG=ja_JP.UTF-8

3. Appliquer les paramètres

export LANG=ja_JP.UTF-8

Configuration de la saisie japonaise

Pour activer la saisie de texte japonais dans le terminal, installez ibus-mozc.

apt install -y ibus-mozc

Si vous utilisez un environnement GUI, ajoutez les variables d’environnement suivantes :

export GTK_IM_MODULE=ibus
export XMODIFIERS=@im=ibus
export QT_IM_MODULE=ibus

Utilisation d’applications GUI

Pour exécuter des applications GUI à l’intérieur d’un conteneur Docker, vous pouvez utiliser un serveur X.

Installez un serveur X sur la machine hôte et lancez le conteneur avec X11 activé.

docker run -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix my-ubuntu-image

6. Optimisation et réduction de la taille des images Docker

Optimiser les images Docker améliore la vitesse de démarrage des conteneurs et réduit l’utilisation du stockage. Cette section présente des méthodes pour créer des images légères.

Créer une image légère basée sur Ubuntu

L’image ubuntu:latest par défaut est relativement grande. Pour réduire la taille du conteneur, envisagez d’utiliser une alternative plus petite comme ubuntu:minimal.

FROM ubuntu:minimal

Alternativement, vous pouvez utiliser Alpine Linux, qui est nettement plus petit qu’Ubuntu.

FROM alpine:latest
RUN apk add --no-cache bash curl

Cette méthode peut réduire la taille de l’image de plusieurs centaines de mégaoctets.

Supprimer les fichiers inutiles pour réduire la taille de l’image

Après avoir installé des paquets avec apt-get, vous pouvez supprimer les fichiers de cache inutiles afin de minimiser la taille de l’image.

RUN apt update && apt install -y curl vim 
    && apt clean 
    && rm -rf /var/lib/apt/lists/*

La commande rm -rf /var/lib/apt/lists/* supprime la liste des paquets, réduisant ainsi les données inutiles.

Utiliser les constructions multi‑étapes

Avec les constructions multi‑étapes, vous pouvez utiliser un conteneur temporaire pour compiler les dépendances tout en conservant une image finale légère.

FROM ubuntu as builder
RUN apt update && apt install -y gcc

FROM ubuntu:minimal
COPY --from=builder /usr/bin/gcc /usr/bin/gcc

Cette technique vous permet d’exclure les outils de développement inutiles de l’image finale, la rendant nettement plus petite.

7. Guide pratique : Développement d’applications dans un conteneur Ubuntu

Dans cette section, nous allons configurer un environnement de développement à l’intérieur d’un conteneur Ubuntu et démontrer comment développer des applications en utilisant Docker.

Configuration d’un environnement de développement Python

Pour créer un environnement de développement Python à l’intérieur d’un conteneur Docker, utilisez le Dockerfile suivant.

FROM ubuntu:latest
RUN apt update && apt install -y python3 python3-pip
CMD ["python3"]

Construisez l’image et exécutez le conteneur.

docker build -t python-dev .
docker run -it python-dev

À l’intérieur du conteneur, vous pouvez exécuter la commande python3 pour lancer des scripts Python et développer des applications.

Configuration d’un environnement de développement Node.js

Pour le développement Node.js, utilisez le Dockerfile suivant.

FROM ubuntu:latest
RUN apt update && apt install -y nodejs npm
CMD ["node"]

Construisez et exécutez le conteneur.

docker build -t node-dev .
docker run -it node-dev

Avec cette configuration, vous pouvez utiliser la commande node pour exécuter du code JavaScript et développer des applications dans un environnement contrôlé.

8. FAQ & Dépannage

Lorsque vous utilisez Docker, vous pouvez rencontrer divers problèmes. Cette section propose des solutions aux problèmes courants et aux questions fréquemment posées.

Difference Between Docker and Virtual Machines

  • Docker: Partage le noyau du système d’exploitation hôte, ce qui le rend léger et permet un démarrage rapide des conteneurs.
  • Virtual Machines (VMs): Chaque VM possède son propre système d’exploitation, consomme plus de ressources et met plus de temps à démarrer.

Docker est plus efficace en utilisation des ressources, ce qui le rend idéal pour les environnements de développement et les déploiements automatisés.

Persisting Data in an Ubuntu Container

Pour conserver les données même après l’arrêt d’un conteneur, utilisez le montage de volume.

docker run -v my_data:/data ubuntu

Le volume my_data stocke les données de façon persistante, permettant d’y accéder même après la suppression du conteneur.

Common Errors and Solutions

1. permission denied Error

Si vous voyez une erreur permission denied en exécutant des commandes Docker, il se peut que votre utilisateur ne fasse pas partie du groupe docker.

Ajoutez votre utilisateur au groupe docker avec la commande suivante :

sudo usermod -aG docker $USER

Après avoir exécuté cette commande, déconnectez-vous puis reconnectez-vous pour appliquer les modifications.

2. image not found Error

Si une image a été supprimée de Docker Hub, indiquez une autre balise pour récupérer une version valide.

docker pull ubuntu:22.04

En spécifiant une version, vous pouvez vous assurer de télécharger une image fonctionnelle.

年収訴求