Docker s’installe sur un serveur Linux ou Windows connecté au réseau et accessoirement au service de stockage externe de l’entreprise. Le démon Docker (dockerd) gère les conteneurs et est exécuté avec l’utilisateur « root » sur le système.
Un conteneur est un processus qui utilise un système de base appelé image, contenant un minimum de librairies et de binaires nécessaires à son fonctionnement. Celles-ci peuvent être téléchargées chez Docker sur sa plateforme Docker Hub ou depuis un emplacement interne.
Une image correspond à une application ou un système de base que l’administrateur peut adapter à son besoin. Le contenu d’une image peut être personnalisé pour satisfaire l’ensemble des besoins : interface Ldap, mise à jour, fichiers de configuration. Ces étapes peuvent être automatisées grâce à un simple fichier appelé le DockerFile.
Le démon Docker est accessible par une API qui permet de passer les commandes de création, de lancement et conteneur ou de téléchargement d’images, voire de montage de volume.
L’image initiale est ensuite instanciée à l’aide d’une commande passée au démon à travers l’API existante, ce qui crée un nouveau processus qui sera le conteneur. Les données modifiées dans ce conteneur sont stockées dans un tampon géré par un système de fichier de type Copy And Write comme UnionFs ou dans le cas de Docker AuFs. Les données ne sont donc pas modifiées dans l’image, mais dans la couche d’abstraction des données du conteneur. Donc, une image peut servir plusieurs conteneurs différents ayant leur base identique.
Le démon Docker embarque des mécanismes importants tels que le load-balancing, la gestion d’un DNS et de l’adressage IP.
Dans la plupart des cas, un conteneur devra être accessible depuis l’extérieur par le réseau. Docker offre la possibilité d’exposer un service vers l’extérieur grâce à un système de NAT automatiquement géré par le démon dans Iptables.
L’isolation système entre les conteneurs s’appuie sur des principes de Namespace natifs au système d’exploitation et de filtrage des appels système au noyau.
cf. https://www.lemagit.fr/tribune/Introduction-aux-risques-et-a-la-securisation-de-Docker-1e-partie