all repos — slides @ c851f62dc110cec0c7ed151d1192fceb3c04952e

Reveal-md slides I made for various occasions

réalise/Docker.md (view raw)

  1---
  2title: Les bases de Docker
  3theme: ./_themes/5ika.css
  4highlightTheme: github
  5verticalSeparator: <!--v-->
  6revealOptions:
  7  transition: 'fade'
  8---
  9
 10# Les bases de Docker
 11
 12---
 13
 14<center>
 15
 16![Logo Docker](img/docker_logo.png)
 17
 18</center>
 19
 20---
 21
 22# Virtualisation ?
 23
 24<center>
 25
 26![Virtualisation](img/virtualization.png)
 27
 28</center>
 29
 30---
 31
 32# C'est quoi Docker ? 🐋
 33
 34- Virtualisation extrêmement légère et rapide
 35- Introduit le concept de **conteneur**
 36- Ouvre plein de nouvelles possibilités (DevOps)
 37- Une application peut être déplacée avec son propre OS
 38- En grande partie Open-source
 39- (Pas d’interface graphique => ligne de commande)
 40
 41---
 42
 43# Pourquoi on voit cela ?
 44
 45Docker permet d'obtenir tout un système Linux en quelques secondes.
 46Cela sert à...
 47
 48- Tester des choses dans un OS isolé sans risqué de casser son ordinateur (OS jetable)
 49- Simuler l'exécution de programme sur des serveurs distants
 50- Avoir un OS commun avec les mêmes programmes installés pour exécuter des apps
 51- Encapsuler notre app pour pouvoir l'exécuter plus facilement partout
 52- Comprendre comment fonctionne le Cloud computing et le CI/CD
 53
 54---
 55
 56Est-ce que Docker est installé sur votre machine ?
 57
 58> Pour en être sûr, entrez `docker info` dans un terminal
 59
 60---
 61
 62# C'est quoi un conteneur ? 📦
 63
 64C'est un système d'exploitation que l'on a réduit au minimal et qui tourne
 65sur notre machine, au dessus de l'OS principal.
 66
 67Par exemple, sur mon Windows, je peux avoir un conteneur faisant
 68tourner un Linux (Ubuntu) minimal et dans ce Linux, je fais tourner
 69un serveur Apache.
 70
 71Les conteneurs offrent une méthode légère et portable pour empaqueter, distribuer et exécuter des applications.
 72
 73---
 74
 75![Conteneurs Docker](img/docker_containers.png)
 76
 77---
 78
 79## Avantages de Docker
 80
 81- **Isolation** : Chaque application est exécutée dans son propre conteneur, assurant l'isolation des ressources et des dépendances.
 82- **Portabilité** : Les conteneurs sont autonomes et peuvent être exécutés sur n'importe quel système compatible avec Docker.
 83- **Reproductibilité** : Les conteneurs fournissent un environnement cohérent, garantissant que l'application fonctionne de la même manière partout.
 84- **Évolutivité** : Les conteneurs permettent de mettre à l'échelle rapidement et facilement les applications.
 85
 86---
 87
 88## Architecture de Docker
 89
 90![Architecture Docker](https://docs.docker.com/engine/images/architecture.svg)
 91
 92---
 93
 94## Principaux composants
 95
 96- **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.
 97- **Conteneurs Docker** : Instances en cours d'exécution d'une image Docker. Chaque conteneur est isolé et fonctionne de manière indépendante.
 98- **Docker Registry** : Répertoire centralisé pour stocker et distribuer des images Docker.
 99- **Dockerfile** : Fichier texte décrivant les étapes nécessaires à la construction d'une image Docker.
100
101---
102
103## Utilisation de Docker
104
1051. **Installation** : Installer Docker Engine sur votre système.
1062. **Pull de l'image** : Récupérer l'image Docker à partir d'un registre public ou privé.
1073. **Création du conteneur** : Créer un conteneur à partir de l'image Docker.
1084. **Exécution du conteneur** : Exécuter des commandes à l'intérieur du conteneur.
1095. **Arrêt et suppression du conteneur** : Arrêter et supprimer le conteneur lorsqu'il n'est plus nécessaire.
110
111---
112
113# Comment obtenir une image ?
114
115Le site [Docker Hub](https://hub.docker.com/search?q=) référencie toutes les images
116que l'on peut récupérer sur sa machine et utiliser pour créer un conteneur.
117
118Par exemple, l'image nommée `ubuntu:23.04` permet de créer un conteneur
119faisant tourner Ubuntu à la version 23.04.
120
121🫵 Sur votre machine, récupérez cette image en faisant:
122
123```bash
124docker pull ubuntu:23.04
125```
126
127---
128
129Pour lister les images présentes sur sa machine, on peut entrer:
130
131```bash
132docker images
133```
134
135Vous devriez voir apparaître une ligne avec `ubuntu`.
136
137---
138
139# Comment créer un conteneur ?
140
141On utilise une image en l'instanciant pour créer un conteneur.
142
143🫵 Essayez la commande suivante:
144
145```bash
146docker run -it ubuntu:23.04
147```
148
149On crée ainsi un conteneur qui tourne sur ma machine.
150
151---
152
153<center>
154
155![Instanciation](img/docker_how.png)
156
157</center>
158
159---
160
161L'image `ubuntu:23.04` fait que nous sommes directement placés
162dans un shell lorsqu'on crée le conteneur.
163
164Vous pouvez quitter le conteneur en entrant `exit` ou faire les commandes
165suivantes dans un second terminal.
166
167Si vous quittez le conteneur, il passera dans l'état *stoppé*.
168
169
170---
171
172# Comment voir les conteneurs ?
173
174La commande suivante permet de lister tous les conteneurs
175**qui tournent** actuellement sur la machine.
176
177```
178docker ps
179```
180
181On peut voir tous les conteneurs, y compris les stoppés, avec
182
183```
184docker ps -a
185```
186
187> Automatiquement, Docker attribue un nom aléatoire à votre conteneur
188> afin de l'identifier.
189
190🫵 Essayez ces commandes et retenez le nom assigné à votre conteneur Ubuntu.
191
192---
193
194# Supprimer un conteneur
195
196Il va vite devenir nécessaire de faire le ménage dans les conteneurs sur
197votre machine.
198
199🫵 Supprimez votre conteneur Ubuntu avec la commande suivante:
200
201```
202docker rm -f nom_conteneur
203```
204
205> Il faut remplacer `nom_conteneur` par le nom du conteneur que vous voulez supprimer.
206
207---
208
209# Lancer un serveur dans un conteneur
210
211L'image `nginx:alpine` lance un serveur NGINX dans un nouveau conteneur.
212
213```bash
214docker pull nginx
215docker run -it nginx
216```
217
218> La commande `docker pull nginx` est facultative.
219> Elle sera automatiquement faite lors du `run` si
220> l'image `nginx` n'existe pas localement.
221
222---
223
224```bash
225docker run -it nginx
226```
227
228<center>
229
230![](img/container_simple.png)
231
232</center>
233
234---
235
236Avec la commande précédente, on crée un conteneur au sein de notre système
237mais il est totalement isolé.
238
239On n'a pas moyen d'y accéder.
240
241---
242
243# Pour la prochaine fois
244
245Trouver comment on crée sa propre image Docker afin
246d'encapsuler l'app https://github.com/5ika/Deer.
247
248Vous aurez besoin de créer un Dockerfile.
249
250> Pas besoin de voir trop compliqué, c'est
251> réalisable en 4-5 lignes maximum
252
253---
254
255# Pour la prochaine fois
256
257Quelques ressources pour vous aider:
258
259- Documentation de Docker https://docs.docker.com/build/guide/
260- ChatGPT
261- Des milliers d'exemple sur GitHub et sur le Web