Ajout du TP n°1
This commit is contained in:
		
							
								
								
									
										362
									
								
								TP1/COMMANDS.md
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										362
									
								
								TP1/COMMANDS.md
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,362 @@
 | 
			
		||||
# TP1 - Introduction à docker et cycle de vie
 | 
			
		||||
 | 
			
		||||
## Sommaire
 | 
			
		||||
2. [Installation](#2-installation)
 | 
			
		||||
   - [2.1. Installation de Docker](#21-installation-de-docker)
 | 
			
		||||
   - [2.2. Vérification de l'installation](#22-vérification-de-linstallation)
 | 
			
		||||
3. [Premiers pas avec Docker](#3-premiers-pas-avec-docker)
 | 
			
		||||
   - [3.1. Images Docker](#31-images-docker)
 | 
			
		||||
     - [3.1.1. Lister les images disponibles](#311-lister-les-images-disponibles)
 | 
			
		||||
     - [3.1.2. Télécharger une image](#312-télécharger-une-image)
 | 
			
		||||
     - [3.1.3. Rechercher une image](#313-rechercher-une-image)
 | 
			
		||||
   - [3.2. Gestion basique des conteneurs](#32-gestion-basique-des-conteneurs)
 | 
			
		||||
     - [3.2.1. Créer un premier conteneur](#321-créer-un-premier-conteneur)
 | 
			
		||||
     - [3.2.2. Observer la différence en mode détaché](#322-observer-la-différence-en-mode-détaché)
 | 
			
		||||
4. [Cycle de vie des conteneurs](#4-cycle-de-vie-des-conteneurs)
 | 
			
		||||
   - [4.1. États des conteneurs](#41-états-des-conteneurs)
 | 
			
		||||
     - [4.1.1. Commandes d'observation](#411-commandes-dobservation)
 | 
			
		||||
     - [4.1.2. Exercice pratique](#412-exercice-pratique)
 | 
			
		||||
   - [4.2. Manipulation des états](#42-manipulation-des-états)
 | 
			
		||||
5. [Inspection et Debug](#5-inspection-et-debug)
 | 
			
		||||
   - [5.1. Logs et monitoring](#51-logs-et-monitoring)
 | 
			
		||||
   - [5.2. Inspection détaillée](#52-inspection-détaillée)
 | 
			
		||||
6. [Exercice final](#6-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
 | 
			
		||||
```bash
 | 
			
		||||
# Vérification de la version installée
 | 
			
		||||
sudo docker --version
 | 
			
		||||
```
 | 
			
		||||
**Résultat** :
 | 
			
		||||
```
 | 
			
		||||
Docker version 27.2.0, build 3ab4256958
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
# 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 
 | 
			
		||||
```bash
 | 
			
		||||
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 
 | 
			
		||||
```bash
 | 
			
		||||
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
 | 
			
		||||
```bash
 | 
			
		||||
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
 | 
			
		||||
```bash
 | 
			
		||||
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é
 | 
			
		||||
```bash
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
# 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
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
# 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
 | 
			
		||||
 | 
			
		||||
1. Création de trois conteneurs nginx avec des noms différents :
 | 
			
		||||
```bash
 | 
			
		||||
sudo docker run -d --name web1 nginx
 | 
			
		||||
```
 | 
			
		||||
**Résultat** :
 | 
			
		||||
```
 | 
			
		||||
74ea9e483cdfc65659e8d957de11da91c8e4c8e523f950f5bb140596fb197e90
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
sudo docker run -d --name web2 nginx
 | 
			
		||||
```
 | 
			
		||||
**Résultat** :
 | 
			
		||||
```
 | 
			
		||||
10df9341c62a04d78b7ba5649c5e45c865013ea616b21362fbbd026a99e86f90
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
sudo docker run -d --name web3 nginx
 | 
			
		||||
```
 | 
			
		||||
**Résultat** :
 | 
			
		||||
```
 | 
			
		||||
1ecd55481aedc61da233a6b26f5b4041f24f2eaa378e9cb44aed4a1180d4c97c
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
2. Observation des états des conteneurs :
 | 
			
		||||
```bash
 | 
			
		||||
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
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
3. 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
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
sudo docker stop web1
 | 
			
		||||
```
 | 
			
		||||
**Résultat** : 
 | 
			
		||||
```
 | 
			
		||||
web1
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
sudo docker start web1
 | 
			
		||||
```
 | 
			
		||||
**Résultat** : 
 | 
			
		||||
```
 | 
			
		||||
web1
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
sudo docker restart web2
 | 
			
		||||
```
 | 
			
		||||
**Résultat** : 
 | 
			
		||||
```
 | 
			
		||||
web2
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
sudo docker pause web3
 | 
			
		||||
```
 | 
			
		||||
**Résultat** : 
 | 
			
		||||
```
 | 
			
		||||
web3
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
sudo docker unpause web3
 | 
			
		||||
```
 | 
			
		||||
**Résultat** : 
 | 
			
		||||
```
 | 
			
		||||
web3
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
sudo docker kill web1
 | 
			
		||||
```
 | 
			
		||||
**Résultat** : 
 | 
			
		||||
```
 | 
			
		||||
web1
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
## 5. Inspection et Debug
 | 
			
		||||
 | 
			
		||||
### 5.1. Logs et monitoring
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
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]
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
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]
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
sudo docker inspect web3 
 | 
			
		||||
```
 | 
			
		||||
**Résultat** : 
 | 
			
		||||
```json
 | 
			
		||||
[
 | 
			
		||||
    {
 | 
			
		||||
        "Id": "1ecd55481aedc61da233a6b26f5b4041f24f2eaa378e9cb44aed4a1180d4c97c",
 | 
			
		||||
        "Created": "2025-04-01T13:37:34.201569663Z",
 | 
			
		||||
        "Path": "/docker-entrypoint.sh",
 | 
			
		||||
            [...]
 | 
			
		||||
                }
 | 
			
		||||
    }
 | 
			
		||||
]
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
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
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
sudo docker run -d --name web-test nginx
 | 
			
		||||
```
 | 
			
		||||
**Résultat** : 
 | 
			
		||||
```
 | 
			
		||||
c7bd94aad4f8f9f9e24fada2c5eb09c60771852a434a3245561ebda94372ad63
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
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
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
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
 | 
			
		||||
[...]
 | 
			
		||||
```
 | 
			
		||||
 | 
			
		||||
```bash
 | 
			
		||||
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
 | 
			
		||||
[...]
 | 
			
		||||
```
 | 
			
		||||
		Reference in New Issue
	
	Block a user