2.6 KiB
2.6 KiB
date
| date |
|---|
| 2025-03-06 |
Docker
Virtualisation
- VirtualBox
- VMWare
- VSphere
- Proxmox
--
Architecture
--
Hyperviseur type 1 (natif)
--
Hyperviseur type 2 (hosted)
--
Avantages
- Isolation complète
- OS / noyau complètement émulés
- Tests sur OS spécifiques
- Lancer un logiciel non supporté
- Environnment reproductible
- Image partagée en ISO
- Ressources disponibles fixes et programmables
Docker
arrive
--
Docker
- Emuler un OS
- Sur un autre OS
- De manière reproductible
--
VMs vs Containers
- Pas d'hyperviseur
- usage direct de l'hôte pour l'émulation
- Les outils sont partagés également
--
Avantages par rapport aux VMs
- Légèreté
- Moins de choses dans un container que dans un iso
- Rapidité
- De mise en route, d'exécution et de destruction
- containers = VM jetables à la volée
- Flexibilité dans l'usage des ressources
--
Inconvénients par rapport aux VMs
- Isolation partielle
- Sécurité
- Pas de ressources fixes
--
VM ou container ?
VM si:
- Besoin d'une isolation complète
- D'accéder aux éléments intrinsèques d'un OS (kernel, libs, ...)
- Usage en ressources prédéfini
Docker si:
- Isolation partielle suffisante
- "Juste" besoin d'une machine indépendante
- Flexibilité (ressources, network, etc.)
--
C'est pas tout
Docker rend programmable un tas de trucs
- Création et le partage d'images
- La mise en réseau des containers
- Le partage de variables, de filesystem avec l'hôtes
- ...
Docker
Les engrenages
Fonctionnement général
Images
- Représentation d'un OS déjà préparé
- Moyen principal de partage d'environnement
- Template pour les containers
- Container = instance d'image
--
Créer son image
Avec un Dockerfile!
FROM python:3.12
WORKDIR /usr/local/app
# Install the application dependencies
COPY requirements.txt ./
RUN pip install --no-cache-dir -r requirements.txt
# Copy in the source code
COPY src ./src
EXPOSE 5000
CMD ["uvicorn", "app.main:app", "--host", "0.0.0.0", "--port", "8080"]
Mais où est l'OS là dedans ?
--
Images de base
--
Layers
!Pasted image 20250305180252.png
Containers
--
Instance d'image
- On peut avoir plusieurs containers qui lancent la même image
- C'est même le principe de Kubernetes
- Uniques par leur container layer mais c'est tout




