15
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

Installation et configuration de Docker · Docker est un outil qui permet de déployer des conteneurs rapidement à partir d’une image pré configuré. Grace à lui, plus de soucis

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.