## 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 --- ## Différents types de conteneurisation - Conteneurs Processus - Docker - Podman - Conteneurs Machine - LXC - LXD --- ## Virtualisation du service ![Comparison between containers, bare metal, and virtual machines](https://about.gitlab.com/images/blogimages/containers-vm-bare-metal.png "Containers vs VMs")\ source : [Gitlab](https://gitlab.com) --- ## Infrastructure as code - Automatisation - Fiabilité - Efficacité - Contrôle des versions - Code = Infrastructre : autodocumenté - Immutabilité --- ## Conteneurs ---- ```bash [1-5|1-2|3|4|5] docker run \ -it --rm \ -v /tmp:/usr/local/apache2/htdocs/ \ -p 8000:80 \ httpd:latest ``` ---- ![OverlayFS](https://docs.docker.com/storage/storagedriver/images/overlay_constructs.webp) ---- --- ## Images ```Docker FROM httpd:alpine COPY files/* /usr/local/apache2/htdocs/ ``` ![Container Insides](./assets/Image.drawio.svg) ```bash docker buildx build . -t demo:latest ``` ---- --- ## Orchestration - Automatisation du déploiement - Horizontal Scaling - Nombreuses platformes - Kubernetes - Docker Compose - OpenShift ---

Docker compose

---- ```yaml [|1-4,11-13,22-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é - Redonance - 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