11 KiB
Executable File
11 KiB
Executable File
TP1 - Introduction à docker et cycle de vie
Sommaire
- Installation
- Premiers pas avec Docker
- Cycle de vie des conteneurs
- Inspection et Debug
- Exercice final
2. Installation
2.1. Installation de Docker
URL de la page de documentation : https://docs.docker.com/desktop/setup/install/linux/archlinux/
Note : Docker est déjà installé sur le système des machines de l'IUT.
2.2 Vérification de l'installation
# Vérification de la version installée
sudo docker --version
Résultat :
Docker version 27.2.0, build 3ab4256958
# Test de fonctionnement avec l'image "hello-world"
sudo docker run hello-world
Résultat :
Hello from Docker!
This message shows that your installation appears to be working correctly.
3. Premiers pas avec Docker
3.1. Images Docker
3.1.1. Lister les images disponibles
sudo docker images
Résultat :
REPOSITORY TAG IMAGE ID CREATED SIZE
<none> <none> 87a2e3453d58 12 days ago 509MB
<none> <none> 93d79f7e6a26 12 days ago 509MB
<none> <none> 7f2d24628277 12 days ago 509MB
chocolate_app-backend latest d7032a3bdf2f 12 days ago 509MB
[...]
3.1.2. Télécharger une image
sudo docker pull nginx
Résultat :
Using default tag: latest
latest: Pulling from library/nginx
6e909acdb790: Already exists
5eaa34f5b9c2: Pull complete
417c4bccf534: Pull complete
e7e0ca015e55: Pull complete
373fe654e984: Pull complete
97f5c0f51d43: Pull complete
c22eb46e871a: Pull complete
Digest: sha256:124b44bfc9ccd1f3cedf4b592d4d1e8bddb78b51ec2ed5056c52d3692baebc19
Status: Downloaded newer image for nginx:latest
docker.io/library/nginx:latest
3.1.3. Rechercher une image
sudo docker search ubuntu
Résultat :
NAME DESCRIPTION STARS OFFICIAL
ubuntu Ubuntu is a Debian-based Linux operating sys… 17524 [OK]
ubuntu/squid Squid is a caching proxy for the Web. Long-t… 108
ubuntu/nginx Nginx, a high-performance reverse proxy & we… 128
ubuntu/cortex Cortex provides storage for Prometheus. Long… 4
ubuntu/kafka Apache Kafka, a distributed event streaming … 53
3.2 Gestion basique des conteneurs
3.2.1. Créer un premier conteneur
sudo docker run nginx
Résultat :
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
[...]
3.2.2. Observer la différence en mode détaché
sudo docker run -d nginx
Résultat :
e624c2ff986d10b23dc4836b3a0cb4c89013f0188b48693a307280d96735e0ff
4. Cycle de vie des conteneurs
4.1. États des conteneurs
4.1.1. Commandes d'observation
# Conteneurs en cours d'exécution
sudo docker ps
Résultat :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e624c2ff986d nginx "/docker-entrypoint.…" 6 minutes ago Up 6 minutes 80/tcp gallant_roentgen
# Liste de tous les conteneurs (actifs et inactifs)
sudo docker ps -a
Résultat :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e624c2ff986d nginx "/docker-entrypoint.…" 8 minutes ago Up 8 minutes 80/tcp gallant_roentgen
1ec88668966f nginx "/docker-entrypoint.…" 9 minutes ago Exited (0) 8 minutes ago musing_kowalevski
f27bbe04a801 hello-world "/hello" 13 minutes ago Exited (0) 13 minutes ago loving_ritchie
8e68c7f4032a hello-world "/hello" 13 minutes ago Exited (0) 13 minutes ago wonderful_proskuriakova
[...]
4.1.2. Exercice pratique
- Création de trois conteneurs nginx avec des noms différents :
sudo docker run -d --name web1 nginx
Résultat :
74ea9e483cdfc65659e8d957de11da91c8e4c8e523f950f5bb140596fb197e90
sudo docker run -d --name web2 nginx
Résultat :
10df9341c62a04d78b7ba5649c5e45c865013ea616b21362fbbd026a99e86f90
sudo docker run -d --name web3 nginx
Résultat :
1ecd55481aedc61da233a6b26f5b4041f24f2eaa378e9cb44aed4a1180d4c97c
- Observation des états des conteneurs :
sudo docker ps
Résultat :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1ecd55481aed nginx "/docker-entrypoint.…" 22 seconds ago Up 22 seconds 80/tcp web3
10df9341c62a nginx "/docker-entrypoint.…" 25 seconds ago Up 25 seconds 80/tcp web2
74ea9e483cdf nginx "/docker-entrypoint.…" 29 seconds ago Up 28 seconds 80/tcp web1
e624c2ff986d nginx "/docker-entrypoint.…" 11 minutes ago Up 11 minutes 80/tcp gallant_roentgen
- Colonnes importantes dans la sortie de
docker ps
:- STATUS : pour voir le statut actuel du conteneur
- NAMES : pour voir le nom attribué au conteneur
- CONTAINER ID : pour identifier le conteneur de manière unique
- PORTS : pour voir les ports exposés par le conteneur
4.2. Manipulation des états
sudo docker stop web1
Résultat :
web1
sudo docker start web1
Résultat :
web1
sudo docker restart web2
Résultat :
web2
sudo docker pause web3
Résultat :
web3
sudo docker unpause web3
Résultat :
web3
sudo docker kill web1
Résultat :
web1
5. Inspection et Debug
5.1. Logs et monitoring
sudo docker logs web3
Résultat :
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
[...]
[FIN DE L'EXECUTION]
sudo docker logs -f web3
Résultat :
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
[...]
[NE S'ARRETE PAS]
sudo docker stats
Résultat :
CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
1ecd55481aed web3 0.00% 12.8MiB / 15.4GiB 0.08% 4.43kB / 0B 0B / 12.3kB 17
10df9341c62a web2 0.00% 12.62MiB / 15.4GiB 0.08% 2.69kB / 0B 0B / 4.1kB 17
e624c2ff986d gallant_roentgen 0.00% 12.74MiB / 15.4GiB 0.08% 7.23kB / 0B 0B / 12.3kB 17
5.2. Inspection détaillée
sudo docker inspect web3
Résultat :
[
{
"Id": "1ecd55481aedc61da233a6b26f5b4041f24f2eaa378e9cb44aed4a1180d4c97c",
"Created": "2025-04-01T13:37:34.201569663Z",
"Path": "/docker-entrypoint.sh",
[...]
}
}
]
sudo docker exec -it web3 /bin/bash
Résultat :
root@1ecd55481aed:/#
Note: Cette commande permet d'accéder à un terminal interactif à l'intérieur du conteneur.
6. Exercice final
sudo docker run -d --name web-test nginx
Résultat :
c7bd94aad4f8f9f9e24fada2c5eb09c60771852a434a3245561ebda94372ad63
sudo docker ps
Résultat :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7bd94aad4f8 nginx "/docker-entrypoint.…" 42 seconds ago Up 41 seconds 80/tcp web-test
1ecd55481aed nginx "/docker-entrypoint.…" 35 minutes ago Up 35 minutes 80/tcp web3
10df9341c62a nginx "/docker-entrypoint.…" 35 minutes ago Up 6 minutes 80/tcp web2
e624c2ff986d nginx "/docker-entrypoint.…" 46 minutes ago Up 46 minutes 80/tcp gallant_roentgen
sudo docker ps -a
Résultat :
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c7bd94aad4f8 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 80/tcp web-test
1ecd55481aed nginx "/docker-entrypoint.…" 36 minutes ago Up 36 minutes 80/tcp web3
10df9341c62a nginx "/docker-entrypoint.…" 36 minutes ago Up 6 minutes 80/tcp web2
74ea9e483cdf nginx "/docker-entrypoint.…" 36 minutes ago Exited (137) 6 minutes ago web1
[...]
sudo docker logs web-test
Résultat :
/docker-entrypoint.sh: /docker-entrypoint.d/ is not empty, will attempt to perform configuration
/docker-entrypoint.sh: Looking for shell scripts in /docker-entrypoint.d/
/docker-entrypoint.sh: Launching /docker-entrypoint.d/10-listen-on-ipv6-by-default.sh
[...]