---
title: Les bases de Docker
theme: ./_themes/5ika.css
highlightTheme: github
verticalSeparator:
revealOptions:
transition: 'fade'
---
# Les bases de Docker
---

---
# Virtualisation ?

---
# C'est quoi Docker ? đ
- Virtualisation extrĂȘmement lĂ©gĂšre et rapide
- Introduit le concept de **conteneur**
- Ouvre plein de nouvelles possibilités (DevOps)
- Une application peut ĂȘtre dĂ©placĂ©e avec son propre OS
- En grande partie Open-source
- (Pas dâinterface graphique => ligne de commande)
---
# Pourquoi on voit cela ?
Docker permet d'obtenir tout un systĂšme Linux en quelques secondes.
Cela sert Ă ...
- Tester des choses dans un OS isolé sans risqué de casser son ordinateur (OS jetable)
- Simuler l'exécution de programme sur des serveurs distants
- Avoir un OS commun avec les mĂȘmes programmes installĂ©s pour exĂ©cuter des apps
- Encapsuler notre app pour pouvoir l'exécuter plus facilement partout
- Comprendre comment fonctionne le Cloud computing et le CI/CD
---
Est-ce que Docker est installé sur votre machine ?
> Pour en ĂȘtre sĂ»r, entrez `docker info` dans un terminal
---
# C'est quoi un conteneur ? đŠ
C'est un systÚme d'exploitation que l'on a réduit au minimal et qui tourne
sur notre machine, au dessus de l'OS principal.
Par exemple, sur mon Windows, je peux avoir un conteneur faisant
tourner un Linux (Ubuntu) minimal et dans ce Linux, je fais tourner
un serveur Apache.
Les conteneurs offrent une méthode légÚre et portable pour empaqueter, distribuer et exécuter des applications.
---

---
## Avantages de Docker
- **Isolation** : Chaque application est exécutée dans son propre conteneur, assurant l'isolation des ressources et des dépendances.
- **PortabilitĂ©** : Les conteneurs sont autonomes et peuvent ĂȘtre exĂ©cutĂ©s sur n'importe quel systĂšme compatible avec Docker.
- **ReproductibilitĂ©** : Les conteneurs fournissent un environnement cohĂ©rent, garantissant que l'application fonctionne de la mĂȘme maniĂšre partout.
- **ĂvolutivitĂ©** : Les conteneurs permettent de mettre Ă l'Ă©chelle rapidement et facilement les applications.
---
## Architecture de Docker

---
## Principaux composants
- **Images Docker** : ModÚles immuables pour créer des conteneurs. Elles contiennent le systÚme d'exploitation, les bibliothÚques et les dépendances nécessaires à l'exécution de l'application.
- **Conteneurs Docker** : Instances en cours d'exécution d'une image Docker. Chaque conteneur est isolé et fonctionne de maniÚre indépendante.
- **Docker Registry** : Répertoire centralisé pour stocker et distribuer des images Docker.
- **Dockerfile** : Fichier texte décrivant les étapes nécessaires à la construction d'une image Docker.
---
## Utilisation de Docker
1. **Installation** : Installer Docker Engine sur votre systĂšme.
2. **Pull de l'image** : Récupérer l'image Docker à partir d'un registre public ou privé.
3. **Création du conteneur** : Créer un conteneur à partir de l'image Docker.
4. **Exécution du conteneur** : Exécuter des commandes à l'intérieur du conteneur.
5. **ArrĂȘt et suppression du conteneur** : ArrĂȘter et supprimer le conteneur lorsqu'il n'est plus nĂ©cessaire.
---
# Comment obtenir une image ?
Le site [Docker Hub](https://hub.docker.com/search?q=) référencie toutes les images
que l'on peut récupérer sur sa machine et utiliser pour créer un conteneur.
Par exemple, l'image nommée `ubuntu:23.04` permet de créer un conteneur
faisant tourner Ubuntu Ă la version 23.04.
𫔠Sur votre machine, récupérez cette image en faisant:
```bash
docker pull ubuntu:23.04
```
---
Pour lister les images présentes sur sa machine, on peut entrer:
```bash
docker images
```
Vous devriez voir apparaĂźtre une ligne avec `ubuntu`.
---
# Comment créer un conteneur ?
On utilise une image en l'instanciant pour créer un conteneur.
đ«” Essayez la commande suivante:
```bash
docker run -it ubuntu:23.04
```
On crée ainsi un conteneur qui tourne sur ma machine.
---

---
L'image `ubuntu:23.04` fait que nous sommes directement placés
dans un shell lorsqu'on crée le conteneur.
Vous pouvez quitter le conteneur en entrant `exit` ou faire les commandes
suivantes dans un second terminal.
Si vous quittez le conteneur, il passera dans l'état *stoppé*.
---
# Comment voir les conteneurs ?
La commande suivante permet de lister tous les conteneurs
**qui tournent** actuellement sur la machine.
```
docker ps
```
On peut voir tous les conteneurs, y compris les stoppés, avec
```
docker ps -a
```
> Automatiquement, Docker attribue un nom aléatoire à votre conteneur
> afin de l'identifier.
𫔠Essayez ces commandes et retenez le nom assigné à votre conteneur Ubuntu.
---
# Supprimer un conteneur
Il va vite devenir nécessaire de faire le ménage dans les conteneurs sur
votre machine.
đ«” Supprimez votre conteneur Ubuntu avec la commande suivante:
```
docker rm -f nom_conteneur
```
> Il faut remplacer `nom_conteneur` par le nom du conteneur que vous voulez supprimer.
---
# Lancer un serveur dans un conteneur
L'image `nginx:alpine` lance un serveur NGINX dans un nouveau conteneur.
```bash
docker pull nginx
docker run -it nginx
```
> La commande `docker pull nginx` est facultative.
> Elle sera automatiquement faite lors du `run` si
> l'image `nginx` n'existe pas localement.
---
```bash
docker run -it nginx
```

---
Avec la commande précédente, on crée un conteneur au sein de notre systÚme
mais il est totalement isolé.
On n'a pas moyen d'y accéder.
---
# Pour la prochaine fois
Trouver comment on crée sa propre image Docker afin
d'encapsuler l'app https://github.com/5ika/Deer.
Vous aurez besoin de créer un Dockerfile.
> Pas besoin de voir trop compliqué, c'est
> réalisable en 4-5 lignes maximum
---
# Pour la prochaine fois
Quelques ressources pour vous aider:
- Documentation de Docker https://docs.docker.com/build/guide/
- ChatGPT
- Des milliers d'exemple sur GitHub et sur le Web