Aller au contenu

Docker

Principe

Docker s'appuie sur les technologies d'isolation linux (namespaces, cgroups,...) pour apporter des mécanismes de virtualisation.

Points clés

  • Docker s'appuie sur les fonctionnalités d'isolation du noyau Linux.
  • Les conteneurs démarrent plus rapidement que les VM car démarrer un conteneur = démarrer un processus isolé. Ainsi :
    • Il n'est pas nécessaire de démarrer un OS complet pour chaque application.
    • Il n'est pas nécessaire d'allouer de la RAM ou des CPU pour chacun (les conteneurs partagent les ressources de l'hôte)
  • Docker amène des concepts et des outils qui facilitent le déploiement des applications en offrant un cadre générique pour l'empaquetage des applications (image docker = livrable universel)
  • Docker s'appuie sur une API mise à disposition par le démon docker.
  • La construction et le téléchargement des images sont optimisés par la mise en cache au niveau des couches de l'image.
  • Docker amène un cadre pour l'observabilité avec la gestion des journaux applicatifs et la collecte de métriques systèmes.
  • Pour travailler avec plusieurs machines, il faut s'intéresser par exemple à Swarm ou Kubernetes.

Les principaux concepts

Les principaux exécutables

Nom Fonction
docker Client en ligne de commande de l'API pour la gestion des objets docker
docker compose Plugin permettant de définir et démarrer une stack applicative complète (services, volumes,...) en YAML (fichier docker-compose.yaml)

Installation

Mise en garde

Pour l'installation de base :

curl -sS https://mborne.github.io/outils/docker/install.sh | bash

Pour tester l'installation :

sudo docker run --rm hello-world

Pour exécuter docker sans sudo, il suffit d'appartenir au groupe docker :

sudo adduser $USER docker
# puis ouvrir d'une nouvelle session

Pour ajouter le support GPU, voir cuda-toolkit - Utilisation avec docker et tester comme suit :

sudo docker run --gpus all nvcr.io/nvidia/k8s/cuda-sample:nbody nbody -gpu -benchmark

Utilisation

Pour débuter avec docker :

Pour l'utiliser en production :

Alternatives

Ressources

La documentation officielle :

Pour une installation avec Ansible :

L'API de docker :