# Docker/Introduction

* Introduction
* Gestion des conteneurs
* Dockerfile
* Docker compose
* Kubernetes
* Problèmes connus
* Introduction
* Gestion des conteneurs
* Dockerfile
* Docker compose
* Kubernetes
* Problèmes connus
[ Modifier le sommaire ]

## Principe

Docker est un logiciel libre conçu pour lancer des applications dans des conteneurs logiciels. Ces conteneurs sont plus légers en ressources que les machines virtuelles car ils partagent leur noyau.

## Images et conteneurs

Les conteneurs sont construis à partir d'images qui partages leur couches en différentiel.
Docker met de plus à disposition un hub pour partager des images : https://hub.docker.com/. On y trouve par exemple celles permettant de faire tourner un site en MediaWiki : https://hub.docker.com/_/mediawiki.

## Installation

Il existe plusieurs versions de Docker :
* Docker CE (community engine) : gratuit. Idéal sur un PC.
* Docker EE (enterprise engine) : version payante certifiée, plutôt pour les serveurs.
* Docker Enterprise : payant et dispose d'outils supplémentaires, par exemple pour gérer les images et les conteneurs.
Une fois installé, la commande suivante doit fonctionner : docker --version.

### Linux

En 2019 on trouve des binaires pour les distributions de Linux suivantes : CentOS, Debian, Fedora et Ubuntu.

#### Via Docker Desktop

Solution mise en avant par la doc Docker depuis 2024, mais elle peut poser des problèmes de performances et de permissions. On peut donc installer Docker avec puis le configurer pour qu'il ne se lance plus avec Docker Desktop :

#### Ubuntu - via repo

Ancienne méthode, utile pour forcer la version :

#### Post-installation

Après installation, le daemon Docker se lancera à chaque démarrage avec la possibilité de remonter certains conteneurs automatiquement.
À ce stade seul root peut utiliser Docker. Il faut ajouter les utilisateurs qui doivent le lancer au groupe "docker" :
Pour relancer Docker si besoin :
Depuis 2022, une interface graphique, Docker Desktop est disponible sur Linux :
Docker Desktop sur Linux est susceptible de retirer le daemon Docker qui marchait avant, sans pouvoir le remplacer.
L'IP du réseau de conteneurs est 172.17.0.1 par défaut (l'associer aux domaines locaux dans /etc/hosts si besoin).

### MacOS

À télécharger depuis https://docs.docker.com/docker-for-mac/install/.
A noter que les performances de Docker Desktop sur Mac ne sont pas au niveau de celles sur Linux, et qu'il existe le partagiciel Orbstack comme alternative.

### Windows

Des interfaces graphiques de gestion de conteneur existent, comme Docker Desktop ou Kitematic. Elles peuvent être intégrées dans un deuxième temps.
Mais le plus simple est de télécharger et installer Docker Desktop depuis le site officiel, car cela installe et configure aussi Docker et Docker Compose.
* Les performances de Docker Desktop sur Windows ne sont pas au niveau de celles sur Linux.
* On ne peut l'installer que pour les versions de Windows pro, car Hyper-V est nécessaire.
* Toute désinstallation de Docker supprimera les images construites sur le poste, et pourra donc occasionner de longs téléchargements après réinstallation et relance.
* En avril 2020 la version 2.3 (et les suivantes, au moins : 2.3.0.1, 2 et 3) freeze très régulièrement (broken pipe). Il était donc préconisé d'utiliser la 2.2.0.5. Mais c'est résolu dans Docker 3.0.0.

#### hosts

Sur Windows, Docker Desktop modifie le fichier hosts en ajoutant :

#### Dans un Active Directory

* Sur Windows pro en AD, il faut ajouter le compte qui utilisera Docker Desktop dans le groupe "docker-users" :
* Les versions antérieures à la 2.1.7 sur Windows pro en AD (active directory), imposent qu'un administrateur du domaine autorise l'accès à C: (un admin local ne suffit pas).

#### WSL

Anciennement baptisé Tech Preview, Docker Desktop WSL 2 Backend utilise Windows Subsystem for Linux pour optimiser les performances de Docker sur Windows, en l'installant dans une VM Linux pouvant accéder à C:.

## Références

* ↑ https://docs.docker.com/storage/storagedriver/
* ↑ https://docs.docker.com/install/overview/
* ↑ https://docs.docker.com/install/linux/docker-ce/ubuntu/
* ↑ https://github.com/docker/desktop-linux/issues/20
* ↑ https://www.ionos.fr/digitalguide/serveur/configuration/tutoriel-docker-installation-et-premiers-pas/
* ↑ https://orbstack.dev/pricing
* ↑ https://kitematic.com/
* ↑ https://docs.docker.com/docker-for-windows/install/
* ↑ https://docs.docker.com/docker-for-windows/release-notes/#docker-desktop-community-2205
* ↑ https://engineering.docker.com/2019/10/new-docker-desktop-wsl2-backend/