This repository has been archived on 2025-06-20. You can view files and clone it. You cannot open issues or pull requests or push a commit.
Files
docker-example/presentation/slides.md
T
2024-07-28 13:47:03 +02:00

3.9 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
source : Gitlab


Différents types de conteneurisation

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

Conteneurs

Contexte d'éxecution isolé : chroot


Base du conteneur : image

  • Point d'entrée (exécutable)
  • Variables d'environnement
  • Ports

Registres d'images

Docker image registry

Lancement d'un conteneur

docker run \
-it --rm \
-v /tmp:/usr/local/apache2/htdocs/ \
-p 8000:80 \
httpd:latest



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

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

Docker compose


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