Vous êtes sur la page 1sur 9

Matière : virtualisation et cloud computing SE : ubuntu 20.

04
Ubuntu 22.04
Travaux pratique
TP 5 : installation et initiation avec Docker Au : 2023-2024
Niveau : LF3 INFO

Prérequis :
- Ubuntu 20.04 ou Ubuntu 22.04 ou n’importe quelle distribution récente de Linux.
- Une connexion internet

Partie 1 : conteneur / container ?


Un conteneur Linux est un processus ou un ensemble de processus isolés du reste du système,
tout en étant légers.

Le conteneur permet de faire de la virtualisation légère, c'est-à-dire qu'il ne virtualise pas les
ressources, il ne crée qu'une isolation des processus. Le conteneur partage donc les ressources
avec le système hôte.

Avantages :
Ne réserver que les ressources nécessaires
Une autre différence importante avec les machines virtuelles est qu'un conteneur ne réserve
pas la quantité de CPU, RAM et disque attribuée auprès du système hôte. Ainsi, nous pouvons
allouer 16 Go de RAM à notre conteneur, mais si celui-ci n'utilise que 2 Go, le reste ne sera pas
verrouillé.
Démarrez rapidement vos conteneurs
Les conteneurs n'ayant pas besoin d'une virtualisation des ressources mais seulement d'une
isolation, ils peuvent démarrer beaucoup plus rapidement et plus fréquemment qu'une
machine virtuelle sur nos serveurs hôtes, et ainsi réduire encore un peu les frais de
l'infrastructure.

Donnez plus d'autonomie à vos développeurs


En dehors de la question pécuniaire, il y a aussi la possibilité de faire tourner des conteneurs
sur le poste des développeurs, et ainsi de réduire les différences entre la "sainte" production, et
l'environnement local sur le poste des développeurs.

Les conteneurs permettent de réduire les coûts, d'augmenter la densité de l'infrastructure,


tout en améliorant le cycle de déploiement.
Les conteneurs étant capables de démarrer très rapidement, ils sont souvent utilisés en
production pour ajouter des ressources disponibles, et ainsi répondre à des besoins de mise à
l'échelle ou de scalabilité. Mais ils répondent aussi à des besoins de préproduction ; en étant
légers et rapides au démarrage, ils permettent de créer des environnements dynamiques et ainsi
de répondre à des besoins métier.

Partie 2 : Installation du docker engine sous Ubuntu 20.04


1- Installation du docker engine sous Ubuntu 20.04

Étape 1 : Mettre à jour le référentiel de packages

Exécutez la commande suivante pour mettre à jour le référentiel de packages du système et


assurer que les derniers packages prérequis sont installés :

sudo apt update

Étape 2 : Installer les packages prérequis

Le gestionnaire des packages apt nécessite quelques packages prérequis sur le système pour
utiliser des packages via HTTPS. Exécutez la commande suivante pour autoriser Ubuntu à
accéder aux référentiels Docker via HTTPS :

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


La commande ci-dessus :

 Permet apt de transférer des fichiers et des données via https.


 Permet au système de vérifier les certificats de sécurité.
 Installe curl , un utilitaire de transfert de données.
 Ajoute des scripts pour la gestion des logiciels.

Étape 3 : Ajouter une clé GPG

Une clé GPG vérifie l'authenticité d'un progiciel. Ajoutez la clé GPG du référentiel Docker à
votre système en exécutant :

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

La sortie doit indiquer OK, vérifiant l'authenticité.

Étape 4 : Ajouter un référentiel Docker

Exécutez la commande suivante pour ajouter le dépôt Docker aux apt sources :

sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal s


table"

La commande ajoute le référentiel Docker officiel et met à jour la base de données des packages
avec les derniers packages Docker.

Étape 5 : Spécifiez la source d'installation

Exécutez la apt-cache commande pour vous assurer que la source d'installation de Docker est
le référentiel Docker, et non le référentiel Ubuntu. La apt-cache commande interroge le cache
de apt packages du gestionnaire de packages pour les packages Docker que nous avons
précédemment ajoutés.

Exécutez la commande suivante :

apt-cache policy docker-ce


Étape 6 : Installer Docker

Installez Docker en exécutant :

sudo apt install docker-ce -y

Étape 7 : Vérifier l'état de Docker

Vérifiez si Docker est installé, le démon a démarré et le processus est activé pour démarrer au
Démarrage de la commande suivante :

sudo systemctl status docker


Exécution de la première commande docker run

Vérifier si docker est correctement installé sur votre système avec la commande hello-world :

$ sudo docker run hello-world


Partie 3 : Création d’une application dans Docker
1. Créer un dossier portant votre prénom et contenant 2 fichiers (Dockerfile et fichier
main.py).
• Dockerfile
• main.py

2. Modifier main.py avec le code ci-dessous.

#!/usr/bin/env python3

print("Je suis étudiant(e) ISIMM et c’est mon premier test python avec docker")

3. Modifier Dockerfile avec les commandes ci-dessous.

FROM python:latest
COPY main.py /
CMD [ "python", "./main.py" ]

4. Créer une image Docker.


Une fois que vous avez créé et édité le fichier main.py et le Dockerfile, créez votre image
pour contenir votre application.

$ docker build -t python-test .

5. Exécuter l’image Docker


Une fois l’image créée, votre code est prêt à être lancé.

$ docker run python-test

6. Modifier le fichier main.py en ajoutant la ligne suivante :

A=22+4
Print(A)

7. Transférer une image vers Docker Hub


- Créer un compte sur Docker Hub.
- Cliquer sur le bouton « repository », mettre le nom du fichier.

8. Tester les commandes suivantes :

$ docker images
$ docker ps -a

9. La syntaxe pour baliser l’image est :


docker tag python-test <your dockerhub username>/python-test:latest

par exemple :
$ docker tag python-test <your dockerhub username>/python-test:latest

10. Transférer l’image vers le référentiel Docker Hub via la commande push

$ docker push <your dockerhub username>/python-test

11. Récupérer et exécuter l’image à partir de Docker Hub

- Supprimer toutes les versions de l’image python-test du système local. Utiliser l’ID
de l’image pour la suppression.

$ docker rmi -f ID_image


$ docker run <your dockerhub username>/python-test

- Exécuter l’image :

Partie 4 : Tester autres containers


1. Démarrer, afficher et supprimer les containers suivants :
- Ubuntu
- debian

2. Créer un dossier « apache » sous le répertoire qui porte votre prénom et écrire les
commandes suivantes :

FROM debian:latest

RUN apt-get -yqq update && apt-get install -yqq apache2


WORKDIR /var/www/html

ENV APACHE_RUN_USER www-data


ENV APACHE_RUN_GROUP www-data
ENV APACHE_LOG_DIR /var/log/apache2
ENV APACHE_PID_FILE /var/run/apache2.pid
ENV APACHE_RUN_DIR /var/run/apache2
ENV APACHE_LOCK_DIR /var/lock/apache2

RUN mkdir -p $APACHE_RUN_DIR $APACHE_LOCK_DIR $APACHE_LOG_DIR


ENTRYPOINT [ "/usr/sbin/apache2" ]
CMD ["-D", "FOREGROUND"]
EXPOSE 80
Créer votre image :

$ docker build -t your dockerhub username/apache .

3. Démarrer le container :

$ docker run -d -p 80 --name=apache your dockerhub username/apache

4. Afficher le port :

$ docker port apache 80

5. Tester le serveur web en ouvrant votre navigateur : localhost :numero_port

6. Modifier le numéro de port 1111. Vous devez arrêter et supprimer le container apache
puis le redémarrer.

7. Sous le répertoire apache, créer un répertoire nommé website. Mettre un fichier


index.html sous le répertoire website comportant les lignes suivantes :

<html>
Bienvenue sur ma page web. Je suis etudiant(e) ISIMM.
</html>

8. Démarrer votre container en montant le répertoire apache :

$ docker rm -f apache

$ docker run -d -p 1111:80 –v /votre_chemin/apache/website:/var/www/html --


name=apache your dockerhub username/apache

9. Faire monter votre image locale vers docker hub avec la commande push. (docker
logout, docker build, docker tag, docker login, docker push).

10. Accéder à la page web via l’adresse IP. Chercher l’adresse IP du container « your
dockerhub username/apache » en tapant :

$ docker inspect <container id> | grep "IPAddress"


Annexe

# Cherche une image sur le dockerhub (que j'explique dans la partie suivante) :
docker search

# Télécharge une image depuis le dockerhub :


docker pull

# Envoie une image sur le dockerhub :


docker push

# Liste les images disponibles :


docker images

# Supprime une image :


docker rmi

# Crée un conteneur :
docker run

# Éteint un conteneur :
docker stop

# Liste les conteneurs démarrés :


docker ps

# Affiche les processus en cours d'un conteneur :


docker top

# Supprime un conteneur :
docker rm

# Crée un conteneur avec un dockerfile :


docker build

# Sauvegarde un conteneur ou une image au format tar.gz :


docker save

# Gère les réseaux :


docker network

# Gère les volumes :


docker volume

Vous aimerez peut-être aussi