Files
DEV/DEV.DOCKER/TP1/COMMANDS.md
T

213 lines
8.7 KiB
Markdown
Raw Normal View History

2026-06-04 18:57:15 +02:00
# Commandes utilisées - TP1
## 2. Installation
### 2.2 Vérification de l'installation :
```shell
sudo docker --version
# Docker version 28.3.3, build 980b856816
sudo docker run hello-world
# Unable to find image 'hello-world:latest' locally
# latest: Pulling from library/hello-world
# 4f55086f7dd0: Pull complete
# Digest: sha256:452a468a4bf985040037cb6d5392410206e47db9bf5b7278d281f94d1c2d0931
# Status: Downloaded newer image for hello-world:latest
# Hello from Docker!
```
## 3 Premiers pas avec Docker
### 3.1 Images Docker
### 3.1.1 Lister les images disponibles
```shell
sudo docker images
# REPOSITORY TAG IMAGE ID CREATED SIZE
# hello-world latest e2ac70e7319a 2 weeks ago 10.1kB
# prog_python latest 3dabe55bd71c 7 weeks ago 1.12GB
# <none> <none> 21d22a499c76 7 weeks ago 1.12GB
# python 3.15-rc-trixie 3bf0ec7eb030 2 months ago 1.12GB
# imunes/template latest 58009592de73 2 years ago 387MB
```
### 3.1.2 Télécharger une image
```shell
sudo docker pull nginx
# Using default tag: latest
# latest: Pulling from library/nginx
# 5435b2dcdf5c: Pull complete
# 054715a6bffa: Pull complete
# 88d1d984b765: Pull complete
# 4a038fd18db1: Pull complete
# 84e114c2bb36: Pull complete
# 7b5d674621c2: Pull complete
# 448ea5cac5d5: Pull complete
# Digest: sha256:7f0adca1fc6c29c8dc49a2e90037a10ba20dc266baaed0988e9fb4d0d8b85ba0
# Status: Downloaded newer image for nginx:latest
# docker.io/library/nginx:latest
```
### 3.1.3 Rechercher une image
```shell
sudo docker search ubuntu
# NAME DESCRIPTION STARS OFFICIAL
# ubuntu Ubuntu is a Debian-based Linux operating sys… 17808 [OK]
# ubuntu/squid Squid is a caching proxy for the Web. Long-t… 125
# ...
```
## 3.2 Gestion basique des conteneurs
1. Créer un premier conteneur :
```shell
docker run nginx
# Il tente de start le process/conteneur nginx et reste en stand by. On peut donc l'arrêter avec <CTRL>+C
```
2.
```shell
docker run -d nginx
# 30dfd1b500397ea6b1845ba194f583dd8bae8e55ba828f2ddc2819ede8d7ed00
```
## 4 Cycle de vie des conteneurs
### 4.1.1 Commandes d'observation
```shell
docker ps # conteneurs en cours d'exécution
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 30dfd1b50039 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 80/tcp admiring_hermann
docker ps -a # tous les conteneurs
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# 30dfd1b50039 nginx "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 80/tcp admiring_hermann
# 5a9d4e300f22 nginx "/docker-entrypoint.…" 4 minutes ago Exited (0) 4 minutes ago infallible_banach
# Pour supprimer toutes les images il faut faire :
docker system prune
```
### 4.1.2 Exercice pratique
1. Créer trois conteneurs nginx avec des noms différents :
```shell
docker run -d --name web1 nginx
# 9de9a334b5001da00fb27ae33e3fc09f4b29a78e9b3606d9cdf61acebaf9941e
docker run -d --name web2 nginx
# db98128c8820faa3720643f7a83d9126a11bf27522a24db7218539023f680a6c
docker run -d --name web3 nginx
# a0d91897890b1eb028571846e5aced4a76bbae8c8c970222a95185b0342e697e
```
2. Les états de chaque conteneurs se remarquent en faisant
3.
```shell
docker ps # Après avoir lancé les conteneurs précédents
# CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
# a0d91897890b nginx "/docker-entrypoint.…" 39 seconds ago Up 38 seconds 80/tcp web3
# db98128c8820 nginx "/docker-entrypoint.…" 52 seconds ago Up 51 seconds 80/tcp web2
# 9de9a334b500 nginx "/docker-entrypoint.…" About a minute ago Up About a minute 80/tcp web1
```
## 4.2 Manipulation des états
```shell
docker stop web1
# ça renvoie : web1 et en faisant docker ps, on voit qu'il n'apparait plus.
docker start web1
# ça renvoie : web1
docker restart web2
# Renvoie web2 et en faisant ps on voit que son timer a recommencé
docker pause web3
# renvoie web3 et affiche ceci dans ps : a0d91897890b nginx "/docker-entrypoint.…" 10 minutes ago Up 10 minutes (Paused) 80/tcp web3
docker unpause web3 # le remet à la normal
docker kill web1 # n'apparait plus dans le ps. Et dans ps -a : 9de9a334b500 nginx "/docker-entrypoint.…" 12 minutes ago Exited (137) 28 seconds ago web1
```
# 5 Inspection et Debug
## 5.1 Logs et monitoring
```shell
docker logs [container-name]
# montre les logs de l'image actuelle du container
docker logs -f [container-name]
# montre les logs du container en temps réel
docker stats
# CONTAINER ID NAME CPU % MEM USAGE / LIMIT MEM % NET I/O BLOCK I/O PIDS
# a0d91897890b web3 0.00% 10.43MiB / 15.42GiB 0.07% 3.15kB / 126B 0B / 12.3kB 13
# db98128c8820 web2 0.00% 10.41MiB / 15.42GiB 0.07% 2.83kB / 126B 0B / 4.1kB 13
# 30dfd1b50039 admiring_hermann 0.00% 10.43MiB / 15.42GiB 0.07% 6.26kB / 126B 0B / 12.3kB 13
```
## 5.2 Inspection détaillée
```shell
docker inspect [container-name]
# "Id": "db98128c8820faa3720643f7a83d9126a11bf27522a24db7218539023f680a6c",
# "Created": "2026-04-13T09:08:18.800415878Z",
# "Path": "/docker-entrypoint.sh",
docker exec -it [container-name] /bin/bash
# renvoie : root@db98128c8820:/# Il permet d'exécuter des commandes dans un container en tant que root
```
# 6 Exercice final
```shell
# 1. Créer un conteneur nginx en mode détaché avec le nom ”web-test”
docker run -d --name web-test nginx
fac3038fbd6c11d119683f146c9be888158e3a145b1ba7050caad8283bb5ac78
docker docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
fac3038fbd6c nginx "/docker-entrypoint.…" 3 seconds ago Up 2 seconds 80/tcp web-test
# 2. Pratiquer toutes les commandes du cycle de vie vues précédemment
```shell
[srivasta@salle234-09 TP1]$ docker stop web-test
web-test
[srivasta@salle234-09 TP1]$ docker start web-test
web-test
[srivasta@salle234-09 TP1]$ docker restart web-test
web-test
[srivasta@salle234-09 TP1]$ docker pause web-test
web-test
[srivasta@salle234-09 TP1]$ docker unpause web-test
web-test
[srivasta@salle234-09 TP1]$ docker kill web-test
web-test
```
# 3. Analyser les logs et les différents états
```shell
[srivasta@salle234-09 TP1]$ docker logs web-test
# Le log est TRES long car l'enchainement de start, restart, stop, kill, chaque démarrage ou arrêt, Nginx lance ou coupe des dizaines de sous-processus ("workers"), ce qui génère instantanément une cascade de lignes pour chaque action.
docker inspect web-test
# On voit que ça renvoie un JSON avec l'état actuel (le conteneur est éteint "Status": "exited", "Running": false). Le code d'erreur "ExitCode": 137 indique qu'il a été arrêté brutalement avec le kill que j'ai utilisé. Il est basé sur l'image "nginx", est configuré pour exposer le port "80/tcp".
# 4. Nettoyer lenvironnement (suppression des conteneurs)
docker stop web-test # Il n'apparait donc plus lorsque l'on fait docker ps
```
# 7 Travaux Pratiques Supplémentaires
## 7.1 Rapatrier l'image officielle du serveur web apache (httpd)
```shell
docker pull httpd:alpine3.17
# Digest: sha256:03c154f29d68648c335a19c8bfca1562251bc8af534e10c6f87361551c381d21
# Status: Downloaded newer image for httpd:alpine3.17
# docker.io/library/httpd:alpine3.17
```
## 7.2 Créer un volume
```shell
docker volume create volume_serveur_web #on crée le volume
docker run --rm -v volume_serveur_web:/data alpine sh -c 'echo "<!DOCTYPE html><html><title>C MOI</title><body><h1>Emmanuel</h1></br><p>SRIVASTAVA-TIAMZON</p></body></html>" >> /data/index.html' # On crée le volume qui contient le fichier html demandé.
```
## 7.3 Démarrer un conteneur
```shell
docker run -d --name tp21 httpd # Démarrer un conteneur en mode détaché nommé tp21
docker run -d --name tp22 -v volume_serveur_web:/usr/local/apache2/htdocs/ httpd:alpine3.17 # Démarrer un conteneur en mode détaché en montant le volume précédemment créé nommé tp22
docker run -d --name tp23 -v volume_serveur_web:/usr/local/apache2/htdocs/ -p 8080:80 httpd:alpine3.17 # Démarrer un conteneur en mode détaché en montant le volume précédemment créé et en exposant le port 80 nommé tp23
```