Upload
phamtram
View
215
Download
0
Embed Size (px)
Citation preview
TRIQUET Guillaume Printed 20/04/2015 Page 1 of 15
IT Service e-doceo © Confidential
Installation et configuration de Docker
Version
TRIQUET Guillaume Création 28/01/2015
TRIQUET Guillaume Ajout s-part.6 29/01/2015
TRIQUET Guillaume Ajout s-part.7.8.9 30/01/2015
TRIQUET Guillaume Ajout annexes, Part.8 03/02/2015
TRIQUET Guillaume Ajout conclusion 04/02/2015
TRIQUET Guillaume Printed 20/04/2015 Page 2 of 15
IT Service e-doceo © Confidential
Sommaire
1. Introduction ..................................................................................................................................... 3
2. Objectifs........................................................................................................................................... 3
3. Qu’es ce que Docker ? ..................................................................................................................... 3
1. Présentation de docker ............................................................................................................... 3
2. Pourquoi choisir docker ? ............................................................................................................ 3
4. Pré requis ......................................................................................................................................... 4
5. Installation ....................................................................................................................................... 4
3. Préparation d’Ubuntu ................................................................................................................. 4
4. Installation de docker .................................................................................................................. 4
6. Utilisation de docker ....................................................................................................................... 5
5. Ajout d’une image à docker ........................................................................................................ 5
6. Déploiement d’un container ....................................................................................................... 5
7. Déploiement d’un container avec instruction ............................................................................. 7
8. Les containers éteints .................................................................................................................. 8
9. Container en cour de fonctionnement ........................................................................................ 9
10. Container lancer en dernier .................................................................................................... 9
7. Création d’un dockerfile .................................................................................................................. 9
11. Les Parties d’un dockerfile ...................................................................................................... 9
8. Docker et virtualisation ................................................................................................................. 11
12. Présentation des systèmes .................................................................................................... 11
13. Avantages de la virtualisation et de docker en entreprise .................................................... 11
14. Docker au sein d’e-doceo ...................................................................................................... 12
9. Conclusion ..................................................................................................................................... 13
10. Annexes ..................................................................................................................................... 14
15. Annexe 1 : Commande .......................................................................................................... 14
16. Annexe 2 : Drapeau ............................................................................................................... 15
17. Annexe 3 : Définition ............................................................................................................. 15
TRIQUET Guillaume Printed 20/04/2015 Page 3 of 15
IT Service e-doceo © Confidential
1. Introduction
Dans le cadre de mon stage de second année de BTS, j’ai eu comme projet de réalisé une veille
technologique sur le thème de docker. Docker était une technologie émergeante, j’ai donc étudié
dans quel bute il avait été créé, son fonctionnement, ses avantages vis-à-vis de la virtualisation actuel
et dans ce document je vais vous présenter son installation avec son utilisation de base.
2. Objectifs
Voici les différents objectifs fixés pour ce projet :
- Installer docker sur une machine sous Linux
- Expliquer le fonctionnement de docker de base
- Expliquer le fonctionnement d’une image
- Expliquer le fonctionnement d’un container
- Suite à l’installation, démontrer les avantages de docker vis-à-vis de la virtualisation
3. Qu’es ce que Docker ?
1. Présentation de docker
Tout d’abord docker est une plateforme pour les développeurs et les administrateurs qui vous
permet de créer un « container », une sorte de machine virtuelle qui contient une application et
toutes ses dépendances. Vous pouvez envoyer ce « container » librement à quelqu’un qui pourra le
faire tourner sur sa machine. Bref pour simplifier, un container docker c’est comme une machine
virtuelle « légère ». C’est une machine virtuelle qui ne contient que ce qui est nécessaire pour faire
tourner votre application.
2. Pourquoi choisir docker ?
Docker est un outil qui permet de déployer des conteneurs rapidement à partir d’une image pré
configuré.
Grace à lui, plus de soucis de déploiement élongé de machine virtuel, de problèmes de compatibilités
entre version et applications, de surcharge de disque dure à cause de nombreuses machines virtuelle
sans oublier le partage d’image via le Cloud car celui-ci est très légère (entre 300 et 600 mo par
image).
TRIQUET Guillaume Printed 20/04/2015 Page 4 of 15
IT Service e-doceo © Confidential
4. Pré requis
Voici quelque pré requis pour facilité l’installation et l’utilisation de docker
- Une machine (physique ou virtuel) avec un système d’exploitation sous linux (ubuntu,
debian …)
- Avoir des connaissances sur les commandes Linux
- Avoir une connexion internet
- Avoir un espace disque suffisant pour l’ajout de plusieurs images et conteneurs
5. Installation
3. Préparation d’Ubuntu
Pour commencer, lancer le terminal sur votre machine Ubuntu, une fois sur celui-ci, saisissez la
commande suivante pour rechercher de nouvelles mises à jour logicielles.
Effectuer la commande suivante pour installer les dernières mises à jour.
Il vous demande dans le cas de mise à jour à installer si vous êtes sur de vouloir continuer, saisissez
« O » pour que la mise à jour s’installe.
4. Installation de docker
Une fois votre Ubuntu mis à jour, il vous faut installer le package « docker.io » qui va nous permettre
l’utilisation de docker.
Effectuer la commande suivante :
Il vous demande une fois l’installation lancé si vous êtes sur de vouloir continuer, saisissez « O » pour
que l’installation continue.
Docker est installer sur votre machine, la partie utilisation peut alors commencer.
TRIQUET Guillaume Printed 20/04/2015 Page 5 of 15
IT Service e-doceo © Confidential
6. Utilisation de docker
Un résumé des commandes et des drapeaux sera mis en Annexe 1 et 2.
5. Ajout d’une image à docker
On peut visualiser grâce à la commande suivante les images inséré à docker :
Comme on le constate, nous n’avons pas encore d’image, voici comment l’inséré.
D’abord, aller sur le site de docker « https://registry.hub.docker.com/ » dans la section docker hub
pour choisir une image pré configurer.
Dans notre cas, nous allons prendre une image d’Ubuntu de base.
Votre image est donc télécharger. On peut le vérifier avec la commande suivante :
Vous pouvez voir une quinzaine d’image télécharger, nous allons sélectionner celle-ci-dessue.
6. Déploiement d’un container
Une fois votre image importer ou créé, vous allez pouvoir la modifier en ajoutant un package pour en
faire un serveur ou une image avec application.
Pour cela il suffi d’exécuter l’image voulut avec la commande suivante grâce à l’ « IMAGE ID » (ci-
dessus):
TRIQUET Guillaume Printed 20/04/2015 Page 6 of 15
IT Service e-doceo © Confidential
Vous allez arriver sur un nouveau container ouvert à partir de l’image ubuntu lastest.
Sur ce conteneur vous aller pouvoir installer votre serveur ou plugins.
Dans mon exemple, je vais installer apache 2, voici les commandes utilisées.
Il vous demande une fois l’installation lancé si vous êtes sur de vouloir continuer, saisissez « Y » pour
que l’installation continue.
Une fois installé, nous allons configurer notre site WEB puis quitter le conteneur grâce à la
commande « exit ».
Ensuite, nous allons enregistrer notre container avec apache dessus pour en faire une image pré
configuré pour une utilisation futur.
Faire les commandes suivantes pour créer notre nouvelle image à partir du container
Conteneur disposant d’apache précédemment fermé
Image créé à partir du container
Vérification de la création de l’image :
Vous avez créé votre image contenant apache dessue, il ne vous reste plus qu’a exécuter le container
et votre serveur apache sera déployer en quelque second.
TRIQUET Guillaume Printed 20/04/2015 Page 7 of 15
IT Service e-doceo © Confidential
7. Déploiement d’un container avec instruction
Il est possible de déployer un container en intégrant une instruction à celle-ci, cela permet par
exemple de démarrer apache à l’ouverture d’un container.
Voici comment procéder :
Commencer par prendre une image avec apache2 d’installer dessus, dans notre cas « apache/test1 ».
Vous allez l’exécuter de la manière suivante, avec la comme de base d’ouverture d’un container, puis
ajouter la commande de démarrage d’apache.
Ce résultat va s’afficher, comme quoi apache2 démarre.
Ensuite, vous allez sauvegarder votre container en t’en que nouvelle image avec la commande
« docker commit « nom du container » « nom de la nouvelle image » »
Dans mon cas je vais nommer ma nouvelle image « apache/test2 »
Lors de l’ouverture d’un container à partir de cette image, apache va automatiquement se lancer.
On peut ici voir l’exécution automatique d’apache à l’ouverture du container.
TRIQUET Guillaume Printed 20/04/2015 Page 8 of 15
IT Service e-doceo © Confidential
8. Les containers éteints
A chaque fois que vous allez créer un container puis quitter celui-ci comme réalisé plus haut, il va
être éteint automatiquement.
Nous allons pouvoir visualiser tous les containers créé, cette commande va permettre également de
relancer un container précédemment créé grâce à l’identifiant ou au nom lambda donner au
conteneur à sa création.
Pour visualisé les containers créé et arrêter pour le moment :
Dans cette exemple, on peut voir 2 containers apache en version test de lancé.
Avec dans l’ordre les informations suivante :
- Container ID Identifiant du container, permet le lancement, l’arrêt de celui-ci.
- Image Le nom de l’image, permet d’effectuer les mêmes fonctions que le « container
ID »
- Command Command effectué lors de la création du container.
- Created Le nombre d’heure depuis laquelle le container est créé
- Status Savoir s’il est en fonction ou depuis combien de temps il a été stoppé.
- Ports Savoir si un port spécifique à été déterminer pour le container.
- En jaune se sont les noms par défaut donné au container lors de leurs créations, il
permet d’effectué les mêmes fonctions que le nom d’image.
Pour démarrer un container il suffi de faire : « docker start « nom_container »
Pour stopper un container il suffi de faire : « docker stop « nom_container »
Pour redémarrer un container il suffi de faire : « docker restart « nom_container »
TRIQUET Guillaume Printed 20/04/2015 Page 9 of 15
IT Service e-doceo © Confidential
9. Container en cour de fonctionnement
Grace à cette commande, vous allez pouvoir voir les containers en cour de fonctionnement, les
informations sont les mêmes que ci-dessus en dehors du faite que le container est démarrer (on peut
le voir dans l’information sur le « status »
10. Container lancer en dernier
Grace à cette commande, vous allez pouvoir visualiser le container lancé en dernier sur votre serveur
docker.
7. Création d’un dockerfile
11. Les Parties d’un dockerfile
FROM – définit l’image sur laquelle les instructions qui suivent doivent se baser. Elle doit être la
première instruction du Dockerfile.
MAINTAINER – indique la personne maintenant ce Dockerfile.
RUN – exécute une commande sur l’image courante et commit le résultat.
CMD – définit la commande exécutée au lancement d’un container. Il ne peut y avoir qu’un CMD
dans un Dockerfile. S’il y en a plusieurs, seul le dernier sera pris en compte. Toujours préférer la
syntaxe en tableau.
Remarques : CMD simule un “docker run” et peut être surchargé par cette commande.
EXPOSE – définit le(s) port(s) qui devra être exposé(s) vers l’extérieur.
TRIQUET Guillaume Printed 20/04/2015 Page 10 of 15
IT Service e-doceo © Confidential
ENV – affecte une valeur à une variable d’environnement.
ADD – copie de nouveaux fichiers, dossiers locaux ou des fichiers distants (via URL) et les ajoute dans
le système de fichier du conteneur selon le chemin indiqué. Cette instruction permet de travailler
avec des archives.
COPY – copie de nouveaux fichiers, dossiers locaux et les ajoute dans le système de fichier du
conteneur selon le chemin indiqué. Cette instruction est purement dédiée pour copier des fichiers
locaux lors de la construction d’une image et ne possède aucune capacité de
compression/décompression.
ENTRYPOINT – indique la commande par défaut qui sera exécuté au démarrage du conteneur. Il ne
peut y avoir qu’un ENTRYPOINT dans un Dockerfile. S’il y en a plusieurs, seul le dernier sera pris en
compte. Toujours préférer la syntaxe en tableau.
Remarques : ENTRYPOINT simule un “docker run” et NE PEUT PAS être surchargé par une commande
“docker run” dans le terminal.
En revanche tous les arguments passés sur un “docker run” seront passés en arguments à la
commande spécifiée dans l’instruction ENTRYPOINT du dockerfile.
VOLUME – ajoute un/des volume(s) aux conteneurs crées à partir d’une image. On les utilise par
exemple pour que les conteneurs puissent accéder à notre code source et/ou une base de données.
* Ces volumes peuvent être partagés et réutilisés dans différents conteneurs.
* Un conteneur n’a pas besoin d’être démarré pour partager son volume.
* Un changement dans le volume ne sera pas conservé lorsque l’image sera mise à jour.
* Les volumes sont persistants jusqu’à ce qu’aucun conteneur ne les utilise.
USER – désigne l’utilisateur qui exécutera (RUN) une instruction ou exécutera un ENTRYPOINT.
WORKDIR – assigne le répertoire de travail pour l’exécution des commandes sur l’ENTRYPOINT et/ou
l’instruction CMD lorsque le conteneur est lancé à partir de l’image.
ONBUILD – cette instruction ajoute des déclencheurs aux images. Un déclencheur est exécuté
lorsque l’image est utilisée comme base d’une autre image. Le déclencheur insert une nouvelle
instruction lors de la construction de l’image comme si elle avait été spécifié juste après le FROM. Le
déclencheur peut exécuter n’importe quelle instruction (ADD, RUN …)
TRIQUET Guillaume Printed 20/04/2015 Page 11 of 15
IT Service e-doceo © Confidential
8. Docker et virtualisation
Nous allons à travers cette partie comparer les technologies de virtualisation et de containerisation.
Cette partie sera découper en 3 sous parties, une première sous partie plus général avec la
présentation des systèmes avec leur principal fonctionnalité, la second sous partie montrera les
avantages de chaque technologie en entreprise et la dernière sous partie parlera de l’entreprise e-
doceo et de la façon d’utilisé chaque système.
12. Présentation des systèmes
La virtualisation est une technologie efficace et utilisé depuis plusieurs années dans le milieu
d’entreprise. Il se base sur un logiciel qui va permettre d’utilisé un OS installer sur celui-ci en virtuel.
Nous allons pouvoir alors avoir plusieurs machines virtuelles sur le même poste ou dans le cadre
d’une entreprise pouvoir disposer d’un serveur qui va permettre de supporter les autres serveurs de
l’entreprise. Celui-ci utilise un disque dure virtuel (taille en fonction de l’OS installer) et démarre et
s’utilise commune machine normal.
Docker est quand à lui une technologie en pleine ascension, en effet celui-ci existe depuis un peu
plus d’un an et ne cesse de se développer. Il se base sur l’OS de la machine (beaucoup plus légère
que dans la virtualisation) et déploie des containers (sorte de mini machine virtuel) mais en utilisant
le noyau du système de base et un système de fichier personnel avec plus de système de démarrage,
nous avons un dériver de machine virtuel déplorable à « l’infinie », très rapide (moins de 1 seconde)
et très légère (300 à 600mo).
13. Avantages de la virtualisation et de docker en entreprise
Dans cette sous partie sera présenter les avantages de chacun au sein d’une entreprise.
Suite à se comparatif, nous pourrons déduire de l’utilité possible de ses deux technologies au sein de
la société e-doceo.
VmWare est utilisé depuis plusieurs années au sein d’entreprise diverse, et il sait fais une réputation
au file du temps. Cependant, il se limite sur certain points :
- Il faut un serveur de virtualisation performant et couteux pour permettre le
fonctionnement des serveurs virtuels
- Un espace de stockage suffisant
- Un prix assez élevé pour une grosse infrastructure
- Déploiement d’une machine ou serveur virtuelle assez long
Dans le fonctionnement de docker, celui-ci propose de certaine alternative à ses problèmes, il va
entre autre :
- Utilisé le noyau du serveur ou sera installer docker pour le déploiement des containers
TRIQUET Guillaume Printed 20/04/2015 Page 12 of 15
IT Service e-doceo © Confidential
o Gain en temps
o Gain en espace de stockage
o Logiciel open source
o Ressources matériel faible
On peut voir ci-dessous la comparaison entre une infrastructure de machine virtuelle et par
container.
On peut en déduire sur docker, la partie « guest OS » qui est l’OS virtualité est complètement absent
sur leur container. La méthode docker na pas besoin de cette partie, et grâce à sa, la machine
containeriser démarre en moins de 1seconde et prend quelque centaine de Megaoctet.
On peut ainsi en conclure que docker est une bonne alternative à la virtualisation et on peut même
penser qu’il va la remplacer à thermes. Mais la virtualisation à ses avantages, avec entre autre le faite
que docker est exclusivement réservé à Linux, on ne peut donc pas installer de container sous
Windows, ou du moins pour le moment. Le second point faible de docker est le faite qu’une
application linux ne pourra aller sur un serveur docker Windows et vis versa.
14. Docker au sein d’e-doceo
L’entreprise e-doceo utilise plusieurs serveurs, certain physique et d’autre virtualisé. Tous ne sont
pas virtualisé car d’ancienne machine servent de serveurs test, ou le passage en virtualisé n’est pas
encore effectuer.
TRIQUET Guillaume Printed 20/04/2015 Page 13 of 15
IT Service e-doceo © Confidential
Utilité pour les développeurs d’e-doceo :
- Utilisation en t’en que serveur de test
- Partage de l’image pour déploiement et test identique de la par de chaque personne
(config container identique)
- Permet également le déploiement de serveurs de test différents suivant les projets
- Déploiement et fermeture des containers de test très rapidement
- En cas d’erreur, suppression et réouverture d’un container sans perte de temps
- Dans le cas d’un nouveau collaborateur, celui-ci reçoit rapidement les outils avec lesquels
travailler
Utilité pour le service Infrastructure :
- Utilisation en t’en que serveur de test suivant chaque besoins
- Utilité en t’en que serveur en production (bien que déconseiller pour le moment)
Docker peut devenir pertinent au sein d’e-doceo en t’en que serveur de teste, il aura pour bute de
déployer des services containerisé pour le service infrastructure et développement, à partir d’image
pré configuré et partagé.
Il pourra ensuite être m’y en production suivant l’évolution du produit et de ces nouvelles
fonctionnalités, car pour le moment il manque de souplesse sur certaine fonctionnalités
9. Conclusion
Docker est un outil qui doit encore beaucoup évoluer pour devenir performant en milieu de
production d’entreprise. Cependant, celui-ci est déjà une très bonne solution pour le milieu de test
en entreprise grâce à sa légèreté et sa rapidité à être déployer ou partager.
On peut également en conclure que docker est vraiment révolutionnaire, sa rapidité et sa légèreté on
déjà fait beaucoup parlé de lui. Il pourra d’ici quelque années remplacer la virtualisation, mais d’ici la,
la virtualisation à le temps d’évoluer.
On peut imaginer un éventuel croisement entre la containerisation et la virtualisation, rassemblant
fiabilité et performance pour les besoins à grande échelle.
TRIQUET Guillaume Printed 20/04/2015 Page 14 of 15
IT Service e-doceo © Confidential
10. Annexes
15. Annexe 1 : Commande
attach – Accès sur un conteneur en exécution.
build – Construit un conteneur à partir d’un fichier Dockerfile
commit – Créer une nouvelle image à partir d’une image modifiée.
cp – Copie des fichiers/dossiers du système de fichier d’un conteneur vers une adresse sur l’hôte.
diff – Inspecte les changements dans un système de fichier d’un conteneur.
events – Obtenir les événement en temps réel du serveur.
export – Transmets les contenus d’un conteneur dans une archive tar.
history – Montre l’historique d’une image.
images – Listes les images présentes sur le poste.
import – Créer une nouvelle image de système de fichier à partir du contenu d’une archive tar.
info – Affiche des informations sur l’ensemble du système.
insert – Insert un fichier dans une image.
inspect – Retourne des informations de bas niveau sur un conteneur.
kill – Tue un conteneur en cours d’exécution.
login – S’enregistre ou se logue sur un serveur d’images.
logs – Retourne les logs d’un conteneur.
port – Recherche le port publique exposé.
top – Recherche le process d’exécution d’un conteneur.
ps – Liste les conteneurs.
pull – Récupère une image ou un dépôt du serveur d’images publique de Docker.
push – Pousse une image ou un dépôt sur le serveur d’images de Docker.
restart – Redémarre un conteneur en cours d’exécution.
rm – Supprime un ou plusieurs conteneurs préalablement arrêté(s).
rmi – Supprime une ou plusieurs images.
run – Exécute une commande dans un conteneur.
search – Recherche une image dans l’index de Docker.
start – Démarre un conteneur arrêté.
stop – Stop un conteneur démarré.
tag – Tag une image dans un repository.
version – Montre la version de Docker installé.
wait – Arret jusqu’à ce que le conteneur s’arrête, puis imprime ses codes de sortie.
docker ps –l - Visualisé le dernier container exécuté
docker ps –a – Visualisé tout les container créé
TRIQUET Guillaume Printed 20/04/2015 Page 15 of 15
IT Service e-doceo © Confidential
16. Annexe 2 : Drapeau
-t : Le drapeau -t attribue un terminal intérieur de notre nouveau container.
-i : Le drapeau –i nous permet de faire une connexion interactive en saisissant la norme (STDIN) du
container.
-d : Le drapeau -d permet à Docker d’exécuter container en arrière-plan (mode daemon).
-P : Le drapeau –P demande à Docker de cartographier tous les ports réseau nécessaires à l'intérieur
de notre container.
17. Annexe 3 : Définition
Image : template en lecture seul servant de référence pour construire, instancier un container.
Container : environnement d’exécution construit à partir d’une image. Un conteneur a un état, pas
une image. Plusieurs conteneurs peuvent être lancés à partir d’une image.
Registry : endroit où les images sont stockées, partagées.
Dockerfile : fichier texte permettant de construire une image personnalisée à partir d’une image de
base.