Vous êtes sur la page 1sur 7

TP sur les Conteneurs informatiques:

1. Notion de Conteneur

Les conteneurs informatiques sont des environnements logiciels légers et


portables qui encapsulent une application avec toutes ses dépendances,
permettant ainsi son exécution de manière cohérente et isolée sur n'importe
quel système.

Avantages :

▪ Isolation : Chaque conteneur exécute son application de manière


isolée, ce qui évite les conflits entre les applications et les
dépendances.
▪ Portabilité: Les conteneurs peuvent être exécutés sur n'importe quel
système prenant en charge le moteur de conteneurisation.
▪ Rapidité : Les conteneurs partagent le noyau de l'hôte, ce qui les rend
plus légers et plus rapides à démarrer par rapport aux machines
virtuelles.
▪ Scalabilité: Les conteneurs peuvent être facilement déployés et mis
à l'échelle en fonction des besoins de l'application.

2. Installation d’une plateforme de conteneurisation : Docker

Docker est une plateforme de conteneurisation open-source qui permet aux


développeurs de packager, distribuer et exécuter des applications dans des
conteneurs. Docker utilise des images pour créer des conteneurs. Une
image est un fichier exécutable qui contient tout ce qui est nécessaire pour
exécuter une application.

Quelques commandes usuelles de Docker :

▪ docker ps : Affiche tous les conteneurs en cours d'exécution sur votre


système.
▪ docker ps -a : Affiche tous les conteneurs, y compris ceux qui ne sont
pas en cours d'exécution.
▪ docker run <image> : Crée et exécute un nouveau conteneur à partir
de l'image spécifiée.
▪ docker start <container_id> : Démarre un conteneur arrêté.
▪ docker stop <container_id> : Arrête un conteneur en cours
d'exécution.
▪ docker restart <container_id> : Redémarre un conteneur en cours
d'exécution.
▪ docker rm <container_id> : Supprime un conteneur arrêté.
▪ docker rm -f <container_id> : Supprime un conteneur en cours
d'exécution.
▪ docker exec -it <container_id> <commande> : Exécute une
commande à l'intérieur d'un conteneur en cours d'exécution.
▪ docker logs <container_id> : Affiche les journaux d'un conteneur
spécifique.
▪ docker inspect <container_id> : Affiche les détails d'un conteneur, y
compris les métadonnées, les réglages réseau, etc.
▪ docker stats : Affiche les statistiques d'utilisation des ressources
pour tous les conteneurs en cours d'exécution.
▪ docker cp <container_id>:<source_path> <destination_path> :
Copie des fichiers ou des répertoires depuis ou vers un conteneur.
▪ docker pause <container_id> : Met en pause tous les processus en
cours d'exécution dans un conteneur.
▪ docker unpause <container_id> : Reprend l'exécution d'un
conteneur mis en pause.

Installation de Docker sur Ubuntu 22.04 :


sudo apt update
sudo apt install docker.io

Vérification de l'installation :
Docker --version

Démarrage du service Docker :


sudo systemctl start docker
sudo systemctl enable docker

3. Création de Conteneurs

Conteneur pour l'environnement LAMP : Utilisation de l'image officielle de


Docker pour LAMP.

docker run -d -p 80:80 -v /chemin/vers/mon_projet:/var/www/html


--name mon_conteneur_lamp php:apache

Cette commande lance un conteneur avec un serveur Apache et PHP,


exposant le port 80 et montant le répertoire du projet dans le conteneur.

Conteneur pour l'environnement de développement Python : Utilisation


d'une image Python officielle avec des librairies supplémentaires. Cette
commande lance un conteneur Python, exposant le port 8000 pour accéder
à l'environnement de développement depuis un navigateur.

docker run -d -p 8000:8000 -v /mon_projet_python:/home/Dossier_python --name


conteneur_python python:latest

On peut maintenant utiliser n’importe quel éditeur de texte pour saisir le


script python et le sauvegarder dans le dossier /mon_projet_python. Ce script
apparaîtra automatiquement dans le répertoire /home/Dossier_python du
container. L’option –volume ou -v de docker permet de monter un répertoire
du système hôte sur un point de montage dans le container.
La syntaxe est –volume répertoire_hôte:point_de_montage_container.
Une fois le conteneur lancé, vous pouvez accéder, en ouvrant un navigateur
web et en saisissant l'URL : http://IP_machine_hote:8000.

Conteneur pour un IDE : Eclispe


Il est tout à fait possible d'exécuter un IDE (Environnement de
Développement Intégré) dans un conteneur et d'y accéder depuis un
navigateur externe. Cela peut être réalisé en utilisant des outils comme
Eclipse Che, Theia ou Codiad, qui sont conçus spécifiquement pour être
exécutés dans des conteneurs et accessibles via un navigateur web.

docker run -it --rm -p 8080:8080 eclipse/che


Une fois le conteneur lancé, vous pouvez accéder à Eclipse Che en ouvrant
un navigateur web et en saisissant l'URL : http://IP_machine_hote:8080.

Conteneur pour un environnement de simulation réseau: GNS3


Téléchargez l'image Docker officielle de GNS3 à l'aide de la commande
suivante :
docker pull gns3/gns3-server
Créez un conteneur à partir de l'image téléchargée en utilisant la commande
suivante :
docker run -d --name=mon_container_gns3 --privileged --network=host
-v /tmp/gns3:/tmp/gns3 -v /var/run/docker.sock:/var/run/docker.sock
gns3/gns3-server
L'option -d permet de détacher le conteneur et de le faire fonctionner en
arrière-plan.
L'option --name=gns3-container définit le nom du conteneur.
L'option --privileged est nécessaire pour exécuter GNS3 dans un conteneur
Docker.
L'option --network=host permet d'utiliser le réseau de l'hôte pour la
communication avec les périphériques réseau simulés.
Les options -v sont utilisées pour monter les volumes nécessaires au
fonctionnement de GNS3.

Accès à l'interface web de GNS3 :


Une fois que le conteneur est en cours d'exécution, vous pouvez accéder à
l'interface web de GNS3 en ouvrant un navigateur et en accédant à l'adresse
suivante : http://localhost:3080
Si vous exécutez Docker sur une machine distante, remplacez localhost par
l'adresse IP de la machine distante.
4. Avec docker-compose :

Pour configurer un fichier docker-compose.yml qui inclut un


environnement LAMP, MySQL, un environnement Python, Eclipse Che et
GNS3, vous pouvez utiliser la configuration suivante :
version: '3.8'

services:

lamp:
image: php:apache
ports:
- "80:80"
volumes:
- ./lamp:/var/www/html

mysql:
image: mysql:latest
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_root_password
MYSQL_DATABASE: your_database
MYSQL_USER: your_username
MYSQL_PASSWORD: your_password

python:
image: python:latest
ports:
- "8000:8000"
volumes:
- ./python:/app
command: python -m http.server 8000

che:
image: eclipse/che
ports:
- "8080:8080"

gns3:
image: gns3/gns3-server
privileged: true
network_mode: host
volumes:
- /tmp/gns3:/tmp/gns3
- /var/run/docker.sock:/var/run/docker.sock

Dans ce fichier docker-compose.yml, nous avons défini cinq services :


▪ Services : définit les différents conteneurs à créer.
▪ image spécifie l'image Docker à utiliser pour chaque conteneur.
▪ ports expose les ports du conteneur à l'hôte.
▪ networks connecte les conteneurs à un réseau commun.

▪ lamp: Un conteneur avec un environnement LAMP (PHP avec Apache)


exposant le port 80.
▪ mysql: Un conteneur MySQL avec des variables d'environnement
pour définir le mot de passe root, la base de données, l'utilisateur et le
mot de passe.
▪ python: Un conteneur Python exposant le port 8000 pour servir un
simple serveur web avec le contenu de /app.
▪ che: Un conteneur Eclipse Che exposant le port 8080.
▪ gns3: Un conteneur GNS3 configuré avec des volumes montés et en
mode privilégié pour une exécution appropriée.
Assurez-vous d'adapter les volumes et les configurations spécifiques à vos
besoins, en particulier pour MySQL où vous devriez remplacer
your_root_password, your_database, your_username et your_password par
les valeurs appropriées.

Pour lancer tous les services, placez ce fichier docker-compose.yml dans


un répertoire et exécutez la commande suivante à partir de ce répertoire :
docker-compose up -d
Cette commande lancera tous les services définis dans le fichier docker-
compose.yml en mode détaché, ce qui signifie qu'ils s'exécuteront en
arrière-plan.

Vous aimerez peut-être aussi