Archived
206 lines
3.9 KiB
Markdown
206 lines
3.9 KiB
Markdown
## Simplifiez vos déploiement avec la conteneurisation
|
|
Nathan Tien You
|
|
|
|
---
|
|
|
|
## Sommaire
|
|
- Introduction à la conteneurisation
|
|
- Docker
|
|
- Principes clés
|
|
- Conteneurs
|
|
- Images
|
|
- Orchestration
|
|
- Exemples d'applications
|
|
|
|
---
|
|
|
|
## Nathan Tien You
|
|
- Ingénieur spécialité informatique
|
|
- Développeur fullstack
|
|
- Home Server :
|
|
- Proxmox
|
|
- Docker
|
|
- Gitea actions
|
|
- Amateur de jeux de deckbuilding
|
|
|
|
---
|
|
|
|
## Problématiques liées à la virtualisation
|
|
- Gourmand (Mémoire, processeur, disque dur)
|
|
- Installation lourde
|
|
- Mises à jour et maintenance
|
|
- Système d'exploitation
|
|
- Outils de supervision
|
|
- Dépendances / prérequis
|
|
|
|
---
|
|
|
|
## Infrastructure as code
|
|
- Automatisation
|
|
- Fiabilité
|
|
- Efficacité
|
|
- Contrôle des versions
|
|
- Autodocumenté
|
|
- Immutabilité
|
|
|
|
---
|
|
|
|
## Virtualisation du service
|
|

|
|
<!-- <sup>source : [Gitlab](https://gitlab.com)</sup> -->
|
|
|
|
---
|
|
|
|
## Différents types de conteneurisation
|
|
- Conteneurs Processus
|
|
- Docker
|
|
- Podman
|
|
- Conteneurs Machine
|
|
- LXC
|
|
- LXD
|
|
|
|
---
|
|
|
|
## Conteneurs
|
|
Contexte d'éxecution isolé : chroot
|
|
|
|
<object data-id="chroot.svg" data="./assets/chroot.svg" type="image/svg+xml"></object>
|
|
|
|
---
|
|
|
|
## Base du conteneur : image
|
|
|
|
<object data-id="image.svg" data="./assets/image.svg" type="image/svg+xml"></object>
|
|
|
|
- Point d'entrée (exécutable)
|
|
- Variables d'environnement
|
|
- Ports
|
|
|
|
---
|
|
|
|
## Registres d'images
|
|

|
|
---
|
|
|
|
## Lancement d'un conteneur
|
|
|
|
```bash
|
|
docker run \
|
|
-it --rm \
|
|
-v /tmp:/usr/local/apache2/htdocs/ \
|
|
-p 8000:80 \
|
|
httpd:latest
|
|
```
|
|
|
|
<object data-id="container.svg" data="./assets/Container.drawio.svg" type="image/svg+xml"></object>
|
|
|
|
----
|
|
|
|
<!-- .slide: data-background-video="./assets/run.mp4" data-background-size="contain" -->
|
|
|
|
---
|
|
|
|
## Bonnes pratiques Docker
|
|
- Conteneurs éphémères
|
|
- Processus stateless
|
|
- Architecture Shared-nothing
|
|
- Images minimales
|
|
- Installer uniquement le nécessaire
|
|
- Séparer compilation et mise en production
|
|
|
|
---
|
|
|
|
## Construction d'une image
|
|
```Docker dockercompose
|
|
FROM node:lts-alpine3.20
|
|
WORKDIR /app
|
|
|
|
COPY package.json ./
|
|
COPY package-lock.json ./
|
|
COPY index.js ./
|
|
RUN npm ci
|
|
|
|
CMD ["node", "index.js"]
|
|
```
|
|

|
|
```bash
|
|
docker buildx build . -t demo:latest
|
|
```
|
|
----
|
|
|
|
<!-- .slide: data-background-video="./assets/run.mp4" data-background-size="contain" -->
|
|
|
|
---
|
|
|
|
## Orchestration
|
|
- Automatisation du déploiement
|
|
- Horizontal Scaling
|
|
- Nombreuses platformes
|
|
- Kubernetes
|
|
- Docker Compose
|
|
- OpenShift
|
|
|
|
---
|
|
|
|
<h2>Docker compose</h2>
|
|
<object data-id="Compose.svg" data="./assets/Compose.drawio.svg" type="image/svg+xml"></object>
|
|
<!-- .slide: data-auto-animate -->
|
|
|
|
----
|
|
|
|
```yaml [|1-4,11-13,21-23|5-6,14-15,36-37|8-9,18-19,28-30,32-34|7,16-17,24-25,26-27] dockercompose
|
|
services:
|
|
|
|
database:
|
|
image: redis:alpine3.20
|
|
volumes:
|
|
- database-data:/data
|
|
command: "redis-server --save 60 1"
|
|
networks:
|
|
- back
|
|
|
|
frontend:
|
|
image: docker-demo/front
|
|
build: ./front
|
|
volumes:
|
|
- ./test.txt:/usr/local/apache2/htdocs/test.txt
|
|
ports:
|
|
- "80:80"
|
|
networks:
|
|
- front
|
|
|
|
backend:
|
|
image: docker-demo/backend
|
|
build: ./back
|
|
environment:
|
|
- REDIS_URL=redis://database
|
|
depends_on:
|
|
- database
|
|
networks:
|
|
- back
|
|
- front
|
|
|
|
networks:
|
|
front:
|
|
back:
|
|
|
|
volumes:
|
|
database-data:
|
|
```
|
|
|
|
---
|
|
|
|
## Orchestration : Kubernetes
|
|
- Clusters
|
|
- Stockage distribué
|
|
- Haute Disponibilité
|
|
- Redondance
|
|
- Stratégie de déploiement
|
|
|
|
---
|
|
|
|
## Où utiliser la conteneurisation ?
|
|
- Services internes ou publics
|
|
- DevOps (Déploiement et intégration continue)
|
|
- Technologies Cloud (AWS, Azure...) ou on-prem
|
|
- Complémentaire aux machines virtuelles |