Cours Docker jrombeautnetworxconsulting com Dfinition Docker est un
Cours Docker jrombeaut@networx-consulting. com
Définition • Docker est un produit développé par la société du même nom. Le produit a été dévoilé en mars 2013. • Ce logiciel libre permet de lancer des applications stockés dans des espaces appelés conteneurs. • Il est disponible sous linux depuis sa sortie et en natif sous Windows et OSX depuis 2016
Définition Quelques mots clés : • index : répertoire public (https: //index. docker. io/) • image : conteneur en lecture seule (snapshot) • conteneur : élément manipulable • run : créer un conteneur (à partir d'une image)
Définition Les conteneurs sont composés d’un espace isolé permettant d’exécuter des processus ( 1 application par conteneur en général), d’un accès en Root pour toute utilisation et d’une adresse ip pour communiquer avec l’extérieur ainsi qu’avec les autres conteneurs.
Définition L’objectif principal de Docker est de minimiser le temps et les infrastructures entre le développement, les tests, le déploiement et l’utilisation en production
Les Différentes Editions Docker est disponibles en deux éditions : • Comunity Edition (CE) • Entreprise Edition (CE) Docker Community Edition (CE) est idéal pour les développeurs individuels et les petites équipes cherchant à se familiariser avec Docker et à expérimenter des applications basées sur des conteneurs. Docker Enterprise Edition (EE) est conçu pour les équipes de développement d’entreprise et les équipes informatiques qui conçoivent, déploient et exécutent des applications en production à grande échelle.
Les Différentes Editions
Les Différentes Editions
Les différents services proposés par Docker Produit Fonction Docker Engine Créer le lien client-serveur qui permet de construire et exécuter des conteneurs à l'aide des composants et services de Docker Enterprise Gérer l'ensemble du portefeuille d'applications traditionnelles, de micro-services de pointe, d'applications Big Data, et le déploiement Docker Desktop Application facile à installer pour environnement Mac ou Windows qui permet de commencer à coder et à conteneuriser en quelques minutes, inclut tout ce dont vous avez besoin pour créer, tester et expédier des applications conteneurisées directement à partir de votre machine Docker Hub Outil Saa. S permettant aux utilisateurs de publier et de partager des applications basées container via une bibliothèque commune.
Comparaison Conteneurs/VM • Techniquement, un conteneur n'est pas une VM, mais en terme d'utilisation, le conteneur peut-être apparenté à une VM • Docker permet de lancer un environnement, et isoler les composants de ce container avec les composants de l’hôte. C’est une alternative bien plus performante que les VMs (à utilisation équivalente).
Comparaison Conteneurs/VM Fonctionnement d’une VM Fonctionnement d’un conteneur
Comparaison Conteneurs/VM Avantages Inconvénients Possibilités de virtualiser plus de services Produit jeune Développement rapide et constant de Docker Stabilité MAJ des services indépendantes des MAJ de l’OS Sécurité ? Installation simple (Linux, OSX, Windows) Beaucoup de services supportés
Comparaison Conteneurs/VM Virtualisations Containers + Flexible: Emulation complète ou partielle d’une machine sur une autre - Flexible : virtualisation de l’environnement, pas de la machine Couts de mise en œuvre plus importants Couts de mise en ouvre moins importants Instance consommatrice en ressource + Rapidité de lancement es environnements Vm. Ware, Virtual. Box, Xen, KVM, Hyper-V Open. Vz, Vserver, Jail, Docker
Les plus qu’apportent Docker Par rapport à la virtualisation, Docker permet de : • Faire tourner jusqu’à 100 conteneurs sur un pc portable • 1000 conteneurs sur un serveur • Les logiciels dans les conteneurs tournent aussi rapidement qu’avec un OS hôte • Exécuter les opérations plus rapidement
Première Utilisation Voici quelques commandes de bases pour tester le bon fonctionnement de votre installation Docker : Connaitre la version installé : docker –version Obtenir plus de détail sur la configuration : docker info
Première Utilisation Pour tester le bon fonctionnement de votre installation, il suffit de lancer l’image hello-world :
Première Utilisation Lister les images présentes sur l’installation : docker image ls, Lister les conteneurs présents sur l’installation : docker containers ls [OPTIONS] Les différentes options pour la commande ci-dessus : --all, -a ; --filter , -f ; --format ; --last , n ; --latest ; --no-trunc ; quiet , -q ; --size , -s)
Les Commandes Docker - Effacer un conteneur : docker rm [container. ID] - Redémarrer un conteneur : docker restart [container. ID] - Envoyer des signaux à un conteneur : docker kill [container. ID] - Afficher les conteneurs actifs : docker ps - Afficher les conteneurs en tâche de fond : docker ps -a - Créer une image docker à partir d’un Dockerfile : docker build
Les Commandes Docker Les commandes permettant l’intéraction avec le moteur Docker sont les suivantes : - Recherche d’image : docker search [mot clé] - Téléchargement d’image (depuis le docker Hub) : docker pull [mot clé] - Téléchargement d’image : docker push [dossier]/[image] - Connaître le nombre d’images téléchargées : docker info - Afficher la liste d’images disponibles : docker images - Stopper un conteneur : docker stop [container. ID]
Les Commandes Docker La prochaine commande contient des options importantes à détailler : - Démarrer un conteneur : docker run [OPTIONS] IMAGE[: TAG|@DIGEST] [COMMAND] [ARG. . . ] Définition Option Garder STDIN ouvert, même si pas attaché -i Allouer un pseudo-terminal -t Permet de publier un conteneur, et accessible via une translation de port depuis le serveur. -p Active le mode daemon. Le conteneur sera actif et en tâche de fond -d Force Docker a utiliser un driver exec spécifique -e Pour identifier un conteneur par un nom au lieu d’un ID --name
Les Commandes Docker Définition Option Pour définir un DNS personnalisé --dns Pour définir le mode réseau entre “Bridge”, “none”, “container: ” et “host” --net="" Modifie le contenu du fichier “hosts” en y ajoutant les valeurs spécifiées --add-host Permet d’ajouter un lien vers un autre conteneur --link Permet de créer un partage -c Permet de lier un dossier sur le serveur au conteneur -v
Les images Docker possède un hub qui comprend : • Dépôt public (push/pull gratuit) • Dépôt d'images officielles (sans "/"), et d'images tiers • Systèmes d’exploitations présents : Debian, Ubuntu, Centos, … • Services conteneurisés : php, nginx, mariadb, … • Collection de services supplémentaires : (lier des dépôts github/bitbucket pour lancer un build suite a un commit) • store. docker. com : Référentiel d'image version entreprise
Les images • Une image peut avoir été construite à partir d'une autre image qui elle-même a pu être construite à partir d'une autre image. Ce système fonctionne parfaitement grâce à un système d'empilement de containers. Par conséquent, lorsque vous construisez une image à partir d'une autre image vous stockez en réalité tous les containers qui vous ont permis de passer de votre image de base à votre image finale. Vous pouvez visualiser ce que je vous dis en exécutant la commande docker history.
Les images peuvent avoir des tags : • Les tags symbolisent des différences de version d'une image • C'est le tag : latest qui est utilise par défaut Les images disposent de trois espaces de noms : • Racine : Ubuntu • Utilisateur et organisations : frapsoft /ts-node • Auto-hébérgées (le serveur) : localhost: 5000/myapache
Haute Disponibilité vs Migration Stratégie : • Les conteneurs ne peuvent être migrés à chaud • Choix d’une architecture scalable permettant la haute-disponibilité, tout en négligeant la perte d’un nœud
Autres Services • Docker Machine • Docker Swar
Docker Machine • Permet d'utilise docker sur d'anciennes version de Windows/Mac • Provisionne et configure Docker sur un serveur distant • Fonctionne avec la plupart des cloud providers : AWS, GCE
Docker Swarm Docker en multi hosts : • Installer et exécuter Docker sur Mac ou Windows • Provisionner et gérer plusieurs hôtes Docker distants • Fourniture de Swar clusters • 2 versions : docker swarm et docker-swarm (ancien) • docker swarm (depuis 1. 12) : docker swarm init - join - ps
- Slides: 28