Aller au contenu

Docker/Introduction

Un livre de Wikilivres.

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.

Différence entre un conteneur et une VM.
Docker sur Linux

Images et conteneurs

[modifier | modifier le wikicode]

Les conteneurs sont construis à partir d'images qui partages leur couches en différentiel[1].

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.

Il existe plusieurs versions de Docker[2] :

  • 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.

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

Via Docker Desktop

[modifier | modifier le wikicode]

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[4] :

docker context ls
docker context use default
sudo service docker start

Ubuntu - via apt

[modifier | modifier le wikicode]
Terminal en superutilisateur

Logo

apt-get install ca-certificates curl gnupg lsb-release

mkdir -p /etc/apt/keyrings

curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

echo \
      "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
      $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

apt-get update

apt-get install docker-ce docker-ce-cli containerd.io docker-compose-plugin

docker -v

docker compose version


Ubuntu - via repo

[modifier | modifier le wikicode]

Ancienne méthode, utile pour forcer la version :

Terminal en superutilisateur

Logo

apt-get install apt-transport-https ca-certificates curl gnupg-agent software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add -
apt-key fingerprint 0EBFCD88
add-apt-repository    "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
apt-get update
apt-get install docker-ce docker-ce-cli containerd.io
docker -v
curl -L "https://github.com/docker/compose/releases/download/2.11.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
chmod +x /usr/local/bin/docker-compose
docker-compose --version


Post-installation

[modifier | modifier le wikicode]

Après installation, le daemon Docker se lancera à chaque démarrage avec la possibilité de remonter certains conteneurs automatiquement[5].

Logo

À ce stade seul root peut utiliser Docker. Il faut ajouter les utilisateurs qui doivent le lancer au groupe "docker" :

sudo usermod -aG docker $USER


Pour relancer Docker si besoin :

Terminal en superutilisateur

Logo

sudo systemctl stop docker && sudo systemctl start docker


Depuis 2022, une interface graphique, Docker Desktop est disponible sur Linux :

Terminal en superutilisateur

Logo

sudo apt-get install docker-desktop


Logo

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).

À 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[6] comme alternative.

Des interfaces graphiques de gestion de conteneur existent, comme Docker Desktop ou Kitematic[7]. 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[8], car cela installe et configure aussi Docker et Docker Compose.

Logo

  • 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[9]. Mais c'est résolu dans Docker 3.0.0.

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

# Added by Docker Desktop
192.168.1.20 host.docker.internal
192.168.1.20 gateway.docker.internal
# To allow the same kube context to work on the host and the container:
127.0.0.1 kubernetes.docker.internal
# End of section

Dans un Active Directory

[modifier | modifier le wikicode]

Logo

  • Sur Windows pro en AD, il faut ajouter le compte qui utilisera Docker Desktop dans le groupe "docker-users" :
net localgroup docker-users AD\mon_compte /add
  • 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).

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