Vous êtes sur la page 1sur 34

Dveloppement et tests avec Docker

Administration Systme
IUT de Blagnac
Plan

Virtualisation et cloisonnement

Prsentation de Docker

Mise en oeuvre

24/05/17 Gestion et Scurisation de Serveur 2


Plan

Virtualisation et cloisonnement

Prsentation de Docker

Mise en oeuvre

24/05/17 Gestion et Scurisation de Serveur 3


Virtualisation complte

Applications Applications

OS Invit OS Invit

Noyau + Drivers Noyau + Drivers

Logiciel de Virtualisation (VirtualBox /


Autres applications
QEMU/KVM, VmWare)

Noyau/Systme Hte(Windows, Linux)

Matriel
Para-virtualisation

Contrle de
lhyperviseur Applications Applications
OS de Contrle
privilgi OS Invit OS Invit
Noyau + Drivers Noyau + Drivers Noyau + Drivers
spcifiques spcifiques spcifiques

Hyperviseur

Matriel
Cloisonnement

Applications Applications
Environnement Environnement
cloisonn cloisonn
Espace Utilisateur Espace Espace
principal Utilisateur Utilisateur

Noyau/Systme Hte

Matriel

24/05/17 Gestion et Scurisation de Serveur 6


Plan

Virtualisation et cloisonnement

Prsentation de Docker

Mise en oeuvre

24/05/17 Gestion et Scurisation de Serveur 7


Docker Prsentation

Build, Ship and Run applications

Cration / gestion denvironnements :


De dveloppement
De test
De production

Bas sur le concept de cloisonnement (Pas de


virtualisation !) On parle de conteneurs

Conteneur Environnement Jetable


Docker Pour les dveloppeurs

Pour le dveloppement local :


Gnrer, jeter, rgnrer un environnement de
dveloppement propre
Tests automatiss (Intgration continue)
Gnration de livrables (Excutables et / ou
paquetages) dans un environnement maitris

Pour la publication :
Dmonstration
Livraison / Mise en production

Dvelopper / Tester / Gnrer from scratch !


Docker Pour les administrateurs

Cration / destruction denvironnement de


(pre-) production la vole :
Dploiement dinfrastructure simplifi
Facilit de migration (En urgence ou pas)
Passage lchelle Dploiement plus ou
moins grande chelle de multiples instances
identiques

Le serveur physique nexiste (presque) plus !

Homognisation avec les environnements


des dveloppeurs.
Docker : A DevOps Dream
Docker Exemples

Services : Apache / NGINX / MariaDB


Compilateurs / Interprteurs : GCC /
PHP / Python / Ruby / Java
Dveloppement : Django / Ruby on Rails /
Node.Js
Applications : Wordpress / Drupal /
Prestashop
Distributions compltes : RedHat / Debian
/ Fedora ( /!\)
Docker - Architecture

Applications Applications

Conteneur 1 Conteneur 2
Espace Espace
Utilisateur Utilisateur

Binaire docker +
Docker Engine
Autres applications

Noyau/Systme Hte

Matriel

24/05/17 Gestion et Scurisation de Serveur 13


Docker Architecture

Ecrit en Go

Sous licence Apache 2.0

Modle client / serveur :


Le serveur dockerd : Pilote la construction et lexcution
des conteneurs.
Le client docker : CLI (Command line interface) entre
lutilisateur et le serveur dockerd

3 composants principaux :
Les images
Les conteneurs
Les registres
Docker Architecture

d
o
c
k
Conteneur Conteneur
Socket e 1 2
Unix r
docker d

Noyau/Systme Hte

Matriel
Docker - Disponibilit

Linux
Debian Wheezy
Redhat Enterprise / CentOS 7 / Fedora
Ubuntu
SUSE
Gentoo
ArchLinux

Windows
Ncessit des mcanismes Linux
Via linstallation de Virtualbox

Offres Cloud
Amazon EC2
Rackspace

Liste complte : https://docs.docker.com/installation/#installation


Docker Trade off

Avantages :
Plus lger que les machines virtuelles
Performances amliores
Scuris
Flexible

Inconvnients :
Docker != Virtualisation
Linux uniquement (pour le moment)
Technologie encore rcente
Forte dpendance au noyau de lhte
Docker Les images

Modle ( template ) en lecture seule


Arborescence de fichiers et rpertoires
Agrgation en couche de plusieurs systmes de
fichiers
Systme dexploitation minimaliste (Espace
utilisateur uniquement Pas de noyau)
Excutables / bibliothques configuration des
applicatifs
Mtadonnes :
Commande a excuter lors de linstanciation de
limage
Docker Les conteneurs

Instanciation dune image

Contient :
Larborescence de limage dcompresse + Une
couche supplmentaire lecture-criture
Le(s) processus excuts (Commande spcifi
dans limage)
Connectivit rseau

Bac sable : Environnement dexcution


dtruit aprs usage !
De limage au conteneur

Rcupration de limage

Cration de la structure du conteneur

Construction du systme de fichiers


Assemblage des diffrentes couches
Ajout dune couche en lecture-criture

Configuration du rseau
Configuration dune adresse IP temporaire dans le conteneur
Configuration du routage et du firewall sur le systme hte

Excution de la commande de lancement

Capture de lentre et des sorties standards


Docker Les registres

Dpts en ligne permettant de publier, stocker et tlcharger


des images Docker.

2 types de registres :
Public : Ouvert tous (Accessible via un site WEB)
Priv : Interne une organisation

Docker configur par dfaut pour utiliser le registre Docker


Hub. Il stocke un nombre important dimages prte tre
utilises :
Officielles : Maintenues par la communaut Docker
Personnelles : Nimporte qui peut dposer des images Docker.

Site Web : http://registry.hub.docker.com


Plan

Virtualisation et cloisonnement

Prsentation de Docker

Mise en uvre

24/05/17 Gestion et Scurisation de Serveur 22


Docker - Installation

Sous CentOS 7
# yum install docker
Sous Debian / Ubuntu
# apt-get install docker
Une commande unique :
# docker <instruction> <paramtres>
Documentation :
man docker-<instruction>
http://docs.docker.com
Docker Dmarrage / Arrt

SysVinit :

# /etc/init.d/docker start|stop|restart

Systemd (CentOS 7) :

# systemctl start|stop|restart docker


Manipulation des images (1/2)

Commande gnrique
# docker pull <utilisateur>/<nom_du_dpt>:<tag>
Utilisateur : Compte enregistr sur le registre
Nom dpt : Espace ddi contenant plusieurs
versions dune image
Tag : Identifiant dune version dimage
Exemple de rcupration sur le registre
# docker pull debian:wheezy
# docker pull bonhomme/bluelatex:centos6
Manipulation des images (2/2)

Lister les images locales :


# docker images
# docker images
REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE
ubuntu 14.04 2d24f826cb16 37 hours ago 192.7 MB
ubuntu 14.04.2 2d24f826cb16 37 hours ago 192.7 MB
ubuntu latest 2d24f826cb16 37 hours ago 192.7 MB
ubuntu trusty 2d24f826cb16 37 hours ago 192.7 MB
ubuntu trusty-20150218.1 2d24f826cb16 37 hours ago 192.7 MB
debian 7 c90d655b99b2 3 weeks ago 85.12 MB
debian 7.8 c90d655b99b2 3 weeks ago 85.12 MB
debian latest c90d655b99b2 3 weeks ago 85.12 MB
debian wheezy c90d655b99b2 3 weeks ago 85.12 MB
obonhomme/bluelatex latest 41d440612dc5 4 months ago 962.4 MB

Effacer une image locale :


# docker rmi <image_id>
Oprations sur les conteneur (1/2)

Lancement dun conteneur (Interactif)


# docker run t i debian:wheezy
root@c9992d3c25ba#
Lancement dun conteneur (en mode dmon)
# docker run p 80:80 d nginx
Options :
-t i Lancement en mode interactif
-d Lancement en tche de fond (Mode daemon )
-p <port_hte>:<port_conteneur>
Mapping du port <port_conteneur> sur
<port_hte> de lhte.
Oprations sur les conteneur (2/2)

Lister les conteneurs actifs (TODO)


# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS
c9992d3c25ba nginx:1 "nginx -g 'daemon of 33 minutes ago Up 33 minutes
443/tcp, 0.0.0.0:80->80/tcp stoic_pasteur1
PORTS NAMES
443/tcp, 0.0.0.0:80->80/tcp stoic_pasteur1

Stopper un conteneur
# docker stop <container_id> | <name>
Modification dune image (1/2)

Les images Docker sont versionnables


Possibilit de commiter des
changements :
Lancer un conteneur bas sur une image
existante :
# docker run t i debian:wheezy
Faire les changements dans le conteneur
actif en mode interactif
root@509d02de04f8: apt-get install zsh
root@509d02de04f8: exit
Modification dune image (2/2)

Commiter les changements


# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS
7f9a2f20013e debian:7 /bin/bash" 27 minutes ago Exited (0) 23 minutes ago

# docker commit -m "Ajout de zsh" -a "Olivier Bonhomme" 7f9a2f20013e bonhomme/debian_zsh

Tester la nouvelle image


# docker run t i bonhomme/debian_zsh
# root@20769b956ea7:/# which zsh
/usr/bin/zsh
Cration dune image - Dockerfile

Permet de crer des images Docker


from scratch
Dockerfile : Fichier texte contenant les
instructions pour construire une image
Docker.
Commande de construction de limage :
# docker build
Dockerfile - Format

# Commentaire
INSTRUCTION arguments
INSTRUCTION [ arg1, arg2 ]
Dockerfile Mots cls

FROM: Spcification dune image


servant de base pour la construction de
la nouvelle image.
MAINTAINER: Dclaration de lauteur de
limage.
RUN: Excution dune commande pour la
construction de limage
ADD: Import de fichiers/rpertoires dans
limage
CMD: Commande/script excut au
lancement avec la commande docker run
(1 seule instruction CMD par Dockerfile)
Dockerfile Exemple

FROM fedora:21
MAINTAINER Olivier Bonhomme obonhomme@nerim.net
RUN yum install zsh
RUN mkdir /data/project
ADD run.sh /run.sh

CMD ["/run.sh"]
~

Vous aimerez peut-être aussi