Files
presentations/presentation/slides.md
T

4.0 KiB

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

Comparison between containers, bare metal, and virtual machines


Différents types de conteneurisation

  • Conteneurs Processus
    • Docker
    • Podman
  • Conteneurs Machine
    • LXC
    • LXD

Conteneurs

Contexte d'éxecution isolé : chroot


Base du conteneur : image


Registres d'images

Docker image registry

Lancement d'un conteneur

docker run hello-world



Bonnes pratiques Docker

  • Conteneurs éphémères
    • Processus stateless
    • Architecture Shared-nothing
  • Images minimales
    • Installer uniquement le nécessaire
    • Compiler le code dans les images : pas de compilation en production

Construction d'une image

FROM node:lts-alpine3.20
WORKDIR /app

COPY package.json ./
COPY package-lock.json ./
COPY index.js ./
RUN npm ci

CMD ["node", "index.js"]

Container Insides

docker buildx build . -t demo:latest


Orchestration

  • Automatisation du déploiement
  • Horizontal Scaling
  • Nombreuses platformes
    • Kubernetes
    • Docker Compose
    • OpenShift

Exemple d'usage


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