Comment utiliser Docker sur Ubuntu : Guide complet d’installation, d’images, de Dockerfile et d’optimisation

1. Introduction

Qu’est-ce que Docker ?

Docker est une plateforme qui utilise la technologie de virtualisation basée sur les conteneurs pour développer, distribuer et exécuter efficacement les applications. Contrairement aux machines virtuelles traditionnelles (VM), les conteneurs partagent le noyau du système d’exploitation hôte, permettant un démarrage plus rapide et une consommation de ressources moindre.

Avantages de l’utilisation de Docker sur Ubuntu

Ubuntu est l’une des distributions Linux avec une forte compatibilité avec Docker. Les raisons principales incluent :

  • Support Officiel : Docker supporte officiellement Ubuntu, permettant une installation facile via le dépôt officiel.
  • Gestion de Paquets Stable : Le gestionnaire de paquets APT d’Ubuntu rend la gestion des versions simple.
  • Support Communautaire Étendu : Ubuntu dispose d’une grande base d’utilisateurs mondiale, facilitant la résolution de problèmes en cas d’incidents.

Ce que vous apprendrez dans cet article

Ce guide explique les sujets suivants étape par étape :

  1. Comment installer Docker sur Ubuntu
  2. Opérations de base pour les images Docker
  3. Créer des images personnalisées en utilisant Dockerfile
  4. Configurer la locale japonaise dans un conteneur Ubuntu
  5. Optimiser et minimiser les images Docker
  6. Développer des applications à l’intérieur des conteneurs Ubuntu
  7. Erreurs courantes et dépannage

Le contenu est utile pour les débutants comme pour les utilisateurs avancés, n’hésitez pas à y faire référence à tout moment.

2. Installation de Docker sur Ubuntu

Installation de Docker en utilisant le dépôt officiel

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

1. Supprimer les paquets Docker existants

Ubuntu peut inclure un paquet appelé docker.io, qui pourrait être une version plus ancienne. Supprimez-le avant d’installer la dernière version de Docker.

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

2. Installer les paquets requis

Installez les paquets de dépendance avant l’installation.

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

Après avoir ajouté le dépôt, installez Docker.

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

5. Vérifier l’installation

Vérifiez si Docker est installé correctement en affichant 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 activez le démarrage automatique au boot.

sudo systemctl start docker
sudo systemctl enable docker

2. Autoriser les utilisateurs non root à exécuter Docker

Par défaut, seul root peut exécuter Docker. Autorisez les utilisateurs réguliers à exécuter les commandes Docker.

sudo usermod -aG docker $USER

Déconnectez-vous et reconnectez-vous pour appliquer les modifications.

3. Tester le fonctionnement de Docker

Exécutez le conteneur hello-world en utilisant un compte utilisateur régulier.

docker run hello-world

Si la sortie inclut « Hello from Docker ! », l’installation a réussi.

3. Opérations de base des images Docker

Qu’est-ce qu’une image Docker ?

Une image Docker fonctionne comme un modèle pour créer des conteneurs. En utilisant une image Docker basée sur Ubuntu, vous pouvez rapidement lancer un environnement Ubuntu.

Télécharger des images Ubuntu depuis Docker Hub

Docker Hub fournit de nombreuses images Docker officielles. Pour télécharger une image Ubuntu, exécutez :

docker pull ubuntu

Démarrer et arrêter les conteneurs

Utilisez l’image Ubuntu téléchargée pour démarrer un conteneur :

docker run -it ubuntu bash

Cela ouvre un shell à l’intérieur du conteneur Ubuntu, vous permettant d’opérer à l’intérieur.

Liste des conteneurs

Afficher les conteneurs en cours d’exécution :

docker ps

Afficher tous les conteneurs, y compris ceux arrêtés :

docker ps -a

Arrêt et suppression des conteneurs

Arrêter un conteneur en cours d’exécution :

docker stop [container ID or name]

Supprimer un conteneur inutile :

docker rm [container ID or name]

Gestion des images Docker

Lister les images Docker téléchargées :

docker images

Supprimer une image :

docker rmi [image ID]

4. Création d’images 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 fonction des instructions écrites dans le Dockerfile, vous pouvez créer des images Docker personnalisées. Cela vous permet d’unifier les environnements de développement ou de créer des images incluant les paquets requis.

Syntaxe de base d’un Dockerfile

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

CommandDescription
FROMSpecifies the base image
RUNExecutes commands to build the image
COPYCopies files into the container
WORKDIRSets the working directory
CMDDefault command executed when the container starts
ENTRYPOINTDefines the entry point of the container

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

Suivez les étapes ci-dessous 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 déplacez‑vous dedans.

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

2. Créer un Dockerfile

Créez un Dockerfile à l’intérieur du répertoire et écrivez le contenu suivant :

# Base Ubuntu official image
FROM ubuntu:latest

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

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

# Set working directory
WORKDIR /workspace

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

3. Construire l’image Docker

Construisez une image personnalisée à partir de votre Dockerfile :« ` docker build -t my-ubuntu-image .

L'option `-t` attribue un nom à l'image.



#### 4. Vérifier l'image



Vérifiez votre image nouvellement construite :

docker images

#### 5. Exécuter un conteneur



Démarrez un conteneur à partir de l'image personnalisée :

docker run -it my-ubuntu-image

Cette image inclut des outils tels que `curl` et `vim`.



## 5. Configuration d'un environnement japonais dans les conteneurs Ubuntu



L'image Ubuntu par défaut utilise un environnement anglais. Pour utiliser le japonais, une configuration supplémentaire est requise.



### Configuration de la locale japonaise



Pour activer l'affichage et la saisie japonais dans un conteneur Ubuntu, installez la locale japonaise.



#### 1. Installer les paquets requis

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

#### 2. Configurer la locale



Générez et appliquez la locale :

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 saisir des caractères japonais dans le terminal, installez `ibus-mozc` :

apt install -y ibus-mozc

Si vous utilisez des applications 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, utilisez un serveur X sur la machine hôte.



Exécutez 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 des images Docker



Les images Docker peuvent être optimisées pour améliorer la vitesse de démarrage des conteneurs et réduire l'utilisation du stockage. Voici plusieurs techniques pour créer des images légères.



### Comment créer une image légère basée sur Ubuntu



L'image par défaut `ubuntu:latest` est relativement grande. Utiliser une option plus légère comme `ubuntu:minimal` aide à réduire la taille du conteneur.

FROM ubuntu:minimal

Une autre option est d'utiliser **Alpine Linux**, qui est nettement plus petit qu'Ubuntu.

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

Utiliser Alpine peut réduire la taille de l'image de plusieurs centaines de mégaoctets.



### Réduction de la taille de l'image en supprimant les fichiers inutiles

Vous pouvez réduire la taille de l'image en supprimant les fichiers de cache inutiles créés par `apt-get`.

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

En particulier, la commande `rm -rf /var/lib/apt/lists/*` supprime les listes de paquets et les données inutilisées.

### Utilisation des constructions multi‑étapes

Les constructions multi‑étapes vous permettent d'utiliser des outils uniquement pendant le processus de construction 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

De cette façon, vous évitez d'inclure des outils de développement dans l'image finale, ce qui réduit considérablement son empreinte.

## 7. Exemple pratique : développement d'applications dans des conteneurs Ubuntu

Cette section présente comment configurer des environnements de développement à l'intérieur de conteneurs Ubuntu.

### Configuration d'un environnement de développement Python

Créez le Dockerfile suivant pour configurer un environnement de développement Python dans un conteneur Ubuntu :

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

Construisez l'image et lancez le conteneur :

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

Cet environnement vous permet d'utiliser la commande `python3` pour le développement et le test de scripts.

### Configuration d'un environnement de développement Node.js

Pour configurer un environnement de développement Node.js, utilisez le Dockerfile suivant :

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

Construisez et lancez le conteneur :

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

Cet environnement permet l'exécution de JavaScript et le développement d'applications avec la commande `node`.

## 8. FAQ & Dépannage

L'utilisation de Docker peut entraîner divers problèmes. Vous trouverez ci‑dessous les questions courantes et leurs solutions typiques.

### Différence entre Docker et les machines virtuelles

* **Docker** : Partage le noyau du système d'exploitation hôte, ce qui le rend léger avec un démarrage rapide des conteneurs.  
* **Machines virtuelles (VM)** : Chaque VM inclut son propre système d'exploitation, ce qui entraîne une utilisation plus élevée des ressources et un démarrage plus lent.

Docker excelle en optimisation des ressources et convient aux environnements de développement ainsi qu'au déploiement automatisé.

### Persistance des données dans les conteneurs Ubuntu

Pour conserver les données même après l'arrêt d'un conteneur, utilisez les **montages de volumes** :

docker run -v my_data:/data ubuntu

Même si le conteneur est supprimé, les données stockées dans le volume `my_data` peuvent être réutilisées.

### Erreurs courantes et solutions

#### 1. Erreur `permission denied`

Si vous voyez `permission denied` en essayant d'exécuter Docker, il se peut que votre utilisateur n'appartienne pas au groupe `docker`.

Ajoutez l'utilisateur au groupe Docker :

sudo usermod -aG docker $USER

Déconnectez‑vous et reconnectez‑vous pour appliquer le changement.

#### 2. Erreur `image not found`

Si une image a été supprimée de Docker Hub, spécifiez une balise plus récente lors du pull :

docker pull ubuntu:22.04 « `

Spécifier une version explicite garantit que l’image correcte est récupérée.