Docker
Principe
Docker s'appuie sur les technologies d'isolation linux (namespaces, cgroups,...) pour apporter des mécanismes de virtualisation.
Points clés
- 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.
- Docker s'appuie sur une API mise à disposition par le démon docker qui est exploitée par plusieurs clients.
- Les conteneurs partagent les ressources de l'hôte :
- 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 démarrent plus rapidement que les VM car démarrer un conteneur = démarrer un processus.
- 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 la gestion des journaux applicatifs et la collecte de métriques systèmes.
- Docker s'appuyant sur des mécanismes d'isolation, il faut s'intéresser par exemple à Kubernetes pour travailler avec plusieurs machines.
Installation
- Install Docker Engine on Ubuntu
- Pour ENSG, un script install-docker-ensg.sh est disponible (ne pas utiliser à l'IGN où il convient entre autre d'utiliser des plages d'IP spécifiques et de configurer l'utilisation du proxy)
Les principaux concepts
Les principaux exécutables
Nom | Fonction |
---|---|
docker | Programme en ligne de commande pour la gestion des objets docker |
docker compose | Programme en ligne de commande pour l'orchestration de conteneurs pour simplifier la gestion des stacks applicatives sur un hôte docker |
Utiliser docker
- github.com - mborne/docker-exemples pour une découverte progressive via des exemples.
- container.training - Introduction to Containers pour la version longue (~850 slides).
- docs.docker.com - CLI reference pour la documentation officielle avec une vue d'ensemble des commandes.
- docs.docker.com - CLI Cheat Sheet pour un résumé des principales commandes.
- docs.docker.com - Dockerfile reference pour une vue d'ensemble des commandes disponibles pour écrire un Dockerfile.
- Docker - Les bonnes pratiques.
- Résoudre les problèmes fréquents avec docker.
- Travailler derrière un proxy avec Docker.
Utiliser docker compose
Pour comprendre et aller plus loin
L'implémentation des conteneurs :
- www.linkedin.com - Linux technologies fundamental to containers
- www.lemagit.fr - Conteneurs Linux et Conteneurs Docker : quelle(s) différence(s) ?.
- phoenixnap.com - Docker vs containerd vs CRI-O: An In-Depth Comparison présente des alternatives à docker pour l'exécution de conteneurs et la relation entre docker et containerd.
- Podman est l'une de ces alternatives à docker (mise en avant par exemple dans la certification CKAD pour Kubernetes).
L'implémentation du stockage :
- docs.docker.com - About storage drivers présente le système de fichier par couche des conteneurs et les différentes implémentations (ex : overlay2).
Les options de configuration du démon :
L'API de docker :
- docs.docker.com - Develop with Docker Engine API
- docs.docker.com - Docker Engine API (1.45) pour les spécifications OpenAPI.
- www.docker.com - How to deploy on remote Docker hosts with docker-compose qui aborde
DOCKER_HOST
(par défaut/var/run/docker.sock
) et Docker Context pour se connecter à l'API docker sur un hôte distant.