# Installation et hello-world

### Docker Engine et Docker Desktop

Docker est nativement compatible avec Linux. Il peut être installé et piloté en ligne de commande.

Sous Windows, l'utilisation de Docker Desktop est recommandée, **même si elle n'est pas obligatoire**.  
Il est tout à fait possible d'installer Docker dans WSL, sans Docker Desktop.

<p class="callout warning">Pour la suite de ce cours, nous n'utiliserons que la ligne de commande.</p>

### Installation

#### Linux

La documentation officielle propose une procédure d'installation pour la plupart des distributions : [🔗 Install | Docker Docs](https://docs.docker.com/engine/install/)

Un exemple sous Debian :

```bash
# suppression d'anciennes installations
for pkg in docker.io docker-doc docker-compose podman-docker containerd runc; do sudo apt-get remove $pkg; done

# Ajout du repository Docker officiel (clé PGP)
sudo apt-get update
sudo apt-get install ca-certificates curl
sudo install -m 0755 -d /etc/apt/keyrings
sudo curl -fsSL https://download.docker.com/linux/debian/gpg -o /etc/apt/keyrings/docker.asc
sudo chmod a+r /etc/apt/keyrings/docker.asc

# Ajout du repository Docker officiel (source APT)
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.asc] https://download.docker.com/linux/debian \
  $(. /etc/os-release && echo "$VERSION_CODENAME") stable" | \
  sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
sudo apt-get update

# Installation des paquets
sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin

# Démarrage automatique avec systemd (généralement automatique)
sudo systemctl enable docker.service
sudo systemctl enable containerd.service
```

Par défaut, docker n'est pas utilisable depuis un compte non root. La documentation détaille comment rendre accessible le démon Docker : [🔗 Post-installation steps | Docker Docs](https://docs.docker.com/engine/install/linux-postinstall/)

```bash
# Create the docker group.
sudo groupadd docker

# Add your user to the docker group.
sudo usermod -aG docker $USER

# Add without reboot
newgrp docker
```

#### Windows

Docker préconise l'installation de [🔗 Docker Destkop](https://docs.docker.com/desktop/setup/install/windows-install/).

Sous le capot, Docker Desktop installe Docker Engine dans l'environnement virtualisé WSL ou Hyper-V sous Windows.

Il est tout à fait possible d'installer manuellement WSL sous Windows puis de suivre la procédure d'installation de Docker pour un environnement Linux.

#### MacOS

Voir documentation : [🔗 Docker Desktop Mac](https://docs.docker.com/desktop/setup/install/mac-install/)

#### Machine virtuelle Debian

<p class="callout info">En cas de difficulté, une machine virtuelle Debian 13 prête à l'emploi est disponible ci-dessous.</p>

<span style="color: rgb(132, 63, 161);">**[🔗 Machine virtuelle Debian 13](https://formation.tfrichet.fr/books/machine-virtuelle-debian/page/debian-13-trixie)**</span>

### Hello World

Il est possible de tester l'installation avec la commande suivante :

```bash
docker run hello-world
```

[![image.png](https://formation.tfrichet.fr/uploads/images/gallery/2025-08/scaled-1680-/Gqj7jmHKZOwpBzaq-image.png)](https://formation.tfrichet.fr/uploads/images/gallery/2025-08/Gqj7jmHKZOwpBzaq-image.png)

- `hello-world` est une image docker permettant de vérifier son bon fonctionnement.