Académique Documents
Professionnel Documents
Culture Documents
INTRODUCTION
• Originellement, Docker était basé sur LXC. Il a depuis développé son propre assemblage de
ces 3 mécanismes.
•
En 2013, Docker commence à proposer une meilleure finition et une interface simple qui
facilite l’utilisation des conteneurs LXC.
• Puis il propose aussi son cloud, le Docker Hub pour faciliter la gestion d’images toutes faites
de conteneurs.
• Au fur et à mesure, Docker abandonne le code de LXC (mais continue d’utiliser le chroot,
les cgroups et namespaces).
• Le code de base de Docker (notamment runC) est open source : l'Open Container
Initiative vise à standardiser et rendre robuste l’utilisation de containers.
BÉNÉFICES PAR RAPPORT AUX MACHINES
VIRTUELLES
• Docker permet de faire des “quasi-machines” avec des performances proches du natif.
• Vitesse d’exécution.
• Flexibilité sur les ressources (mémoire partagée).
• Moins complexe que la virtualisation
• Plus standard que les multiples hyperviseurs
• Docker est pensé dès le départ pour faire des conteneurs applicatifs :
• isoler les modules applicatifs.
• gérer les dépendances en les embarquant dans le conteneur.
• se baser sur l'immutabilité : la configuration d’un conteneur n’est pas faite pour être modifiée après
sa création.
• avoir un cycle de vie court -> logique DevOps du “bétail vs. animal de compagnie”
• Docker modifie beaucoup la “logistique” applicative.
• uniformisation face aux divers langages de programmation, configurations et briques logicielles
• installation sans accroc et automatisation beaucoup plus facile
• permet de simplifier l'intégration continue, la livraison continue et le déploiement continu
• rapproche le monde du développement des opérations (tout le monde utilise la même technologie)
• Permet l’adoption plus large de la logique DevOps (notamment le concept d’infrastructure as code)
INFRASTRUCTURE AS CODE
• Quatre possibilités :
• Solution Docker Desktop WSL2 :
• Fonctionne avec Windows Subsystem for Linux : c’est une VM Linux très bien intégrée à Windows
• Le meilleur des deux mondes ?
• Workflow similaire à celui d’un serveur Linux
• Solution VirtualBox : on utilise Docker Engine dans une VM Linux
• Utilise une VM Linux avec VirtualBox
• Workflow identique à celui d’un serveur Linux
• Proche de la réalité de l’administration système actuelle
INSTALLER DOCKER SUR LINUX
• Pas de virtualisation nécessaire car Docker (le Docker Engine) utilise le noyau du système
natif.
• On peut l’installer avec le gestionnaire de paquets de l’OS mais cette version peut être trop
ancienne.
• Sur Ubuntu ou CentOS la méthode conseillée est d’utiliser les paquets fournis dans le dépôt
officiel Docker (vous pouvez avoir des surprises avec la version snap d’Ubuntu).
• Il faut pour cela ajouter le dépôt et les signatures du répertoire de packages Docker.
• Documentation Ubuntu : https://docs.docker.com/install/linux/docker-ce/ubuntu/
LES IMAGES ET CONTENEURS
• Les images
• Docker possède à la fois un module pour lancer les applications (runtime) et un outil de
build d’application.
Docker fonctionne avec des sous-commandes et propose de grandes quantités d’options pour chaque commande.
Utilisez --help au maximum après chaque commande, sous-commande ou sous-sous-commandes
POUR VÉRIFIER L’ÉTAT DE DOCKER
docker info # affiche plein d'information sur l'engine avec lequel vous êtes en contact
docker ps # affiche les conteneurs en train de tourner
docker ps -a # affiche également les conteneurs arrêtés
Créer et lancer un conteneur
• Un conteneur est une instance en cours de fonctionnement (“vivante”) d’une image. docker
run [-d] [-p port_h:port_c] [-v dossier_h:dossier_c] <image> <commande>
• On peut y chercher et trouver presque n’importe quel logiciel au format d’image Docker.
• Il suffit pour cela de chercher l’identifiant et la version de l’image désirée.
• Puis utiliser docker run [<compte>/]<id_image>:<version>
• La partie compte est le compte de la personne qui a poussé ses images sur le Docker Hub. Les
images Docker officielles (ubuntu par exemple) ne sont pas liées à un compte : on peut écrire
simplement ubuntu:focal.
• On peut aussi juste télécharger l’image : docker pull <image>
• On peut également y créer un compte gratuit pour pousser et distribuer ses propres images,
ou installer son propre serveur de distribution d’images privé ou public, appelé registry.