Files
ObsidianWork/Subjects/Docker.md

2.4 KiB

date
date
2025-03-06

Docker


Virtualisation

  • VirtualBox
  • VMWare
  • VSphere
  • Proxmox

--

Architecture

!Pasted image 20250305170955.png

--

Hyperviseur type 1 (natif)

!Pasted image 20250305171345.png

--

Hyperviseur type 2 (hosted)

!Pasted image 20250305171415.png

--

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

Les différences !Pasted image 20250305172704.png

  • 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

!Pasted image 20250305175750.png


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 ?

--

Ilécaché

--

Layers

!Pasted image 20250305180252.png

--