Your browser doesn't support the features required by impress.js, so you are presented with a simplified version of this presentation.

For the best experience please use the latest Chrome, Safari, or Firefox 10.

Présentation
docker logo

Le plan


  1. Le Docker Meetup
  2. La Toolbox
docker logo

Le Docker Meetup : Concrètement


  1. Un évènement officiel Docker Inc.
  2. Des outils, du matériel, des ressources à disposition

  3. Plusieurs évènements dans l'année
  4. Plusieurs formats possibles : Conférences, ateliers pratiques,..

  5. Les points d'entrée
  6. Le site Meetup : Google : "Docker Meetup Noumea"
  7. Le Github : Google : "Docker Meetup Noumea Github"

Meetup banner
docker logo

Le Docker Meetup : Les partenaires


  1. Merci à la CCI
  2. Merci aux speakers
  3. Soyez speaker aux prochains évènements

  4. Merci aux partenaires
Logo CCI Logo GOUV Logo ISI
Logo Nautile Logo NC IT Logo Spilog Logo By Prog
docker logo

Le plan


  1. Le Docker Meetup
  2. La Toolbox
docker logo

La Toolbox


  1. Une présentation
  2. La Registry comme écrin
  3. L'Engine au cœur de l'écosystème
  4. Un Dockerfile a son image
docker toolbox
docker logo

La Toolbox : Une présentation


  1. Briques Open Source sous licence Apache V2
  2. Développées en Go ou python pour les plus anciennes
  3. Basées sur des API REST JSON
  4. le mantra Docker: “batteries included but swappable"
docker toolbox
docker logo

La Toolbox : Une présentation

Un lexique


Container : instance runtime d'une image

Image : template de container basé sur l'union de couches de filesystems

Registry : dépôt d'images Docker accessibles par l'API Registry

Dockerfile : fichier d'instructions pour la construction d'une image

Docker host : VM basée sur un OS Docker-ready

Docker client : CLI permet d'exécuter des commandes Docker

Docker daemon : process exécutant les commandes Docker

Compose : outil de configuration d'une architecture multi-containers à partir d'un fichier yaml

Swarm : outil de gestion d'un cluster de Docker Hosts comme un seul Docker host virtuel

Machine : outil de création de Docker hosts en local, sur un data center ou sur un cloud provider

docker logo

La Toolbox : Une présentation

L'environnement d'execution Linux


docker host
docker logo

La Toolbox : Une présentation

Le cycle de vie


docker lifecyle
docker registry

La Toolbox : La Registry comme écrin


  1. Une présentation
  2. La Registry comme écrin
  3. L'Engine au cœur de l'écosystème
  4. Un Dockerfile a son image
docker registry
docker registry

La Toolbox : La Registry comme écrin

Qu'est-ce que la Registry ?


  1. Projet Open source Distribution sous licence Apache V2
  2. Développée en Go
  3. Un lieu central ou stocker et distribuer des images Docker
  4. Stocke les différentes couches d'une image
  5. Stocke la description permettant de construire une image
  6. Expose l'API Registry aux clients Docker
  7. En V2 emet des notifications webhook (autoredeploy )

  8. Docker Hub: registry SaaS (images publiques gratuites )
  9. Docker Trusted Registry: version on-premise de Docker Hub
docker registry

La Toolbox : La Registry comme écrin

Quelques astuces pour bien choisir son image


  1. Vérifier soigneusement le contenu du Dockerfile
  2. Eviter les images sans github associé
  3. Préférer une image légère : voir l'onglet tag pour la taille
  4. Plébiscitée: stars/downloads/forks de DockerHub/GitHub
  5. Maintenue: repository automated et dates des tags
  6. Privilégier les images officielles (après portage sur Alpine)

  7. Embauche de Natanael Copa créateur d'Alpine
  8. Février 2016 : Hykes annonce le portage des images officielles sur Alpine
docker plus alipine
docker logo

La Toolbox : L'Engine au cœur de l'écosystème


  1. Une présentation
  2. La Registry comme écrin
  3. L'Engine au cœur de l'écosystème
  4. Un Dockerfile a son image
docker toolbox
docker logo

La Toolbox : L'Engine au cœur de l'écosystème

Qu'est-ce que l'Engine ?


  1. Projet Open source Docker sous licence Apache V2
  2. Développé en Go
  3. Composé d'un client CLI pour exécuter des commandes
  4. Au travers de l'API REST Engine
  5. Exécutées par le daemon du Host

  6. Les commandes permettent de
  7. Gérer des images
  8. Gérer des containers
docker engine
docker logo

La Toolbox : L'Engine au cœur de l'écosystème

Le workflow des commandes de base

docker commands
docker logo

La Toolbox : L'Engine au cœur de l'écosystème

docker lifecyle
docker logo

La Toolbox : L'Engine au cœur de l'écosystème

docker lifecyle
docker logo

La Toolbox : L'Engine au cœur de l'écosystème

docker lifecyle
docker logo

La Toolbox : L'Engine au cœur de l'écosystème

docker lifecyle
docker logo

La Toolbox : L'Engine au cœur de l'écosystème

Quelques astuces pour se simplifier la vie


docker build -t myImage . : nommer/tagger ses images
docker rmi $(docker images -aq) : supprimer toutes les images

docker run --name myName myImage : nommer ses containers
docker ps -a : afficher tous les containers
docker rm -f myName : arrêter et supprimer son container en une fois
docker rm $(docker ps -aqf status=exited) : supprimer les containers arrêtés

docker exec -it myName /bin/bash : entrer dans un container démarré
docker logs -tf myName : afficher les logs d'un container
docker logo

La Toolbox : Un Dockerfile à son Image


  1. Une présentation
  2. La Registry comme écrin
  3. L'Engine au cœur de l'écosystème
  4. Un Dockerfile a son image
docker toolbox
docker logo

La Toolbox : Un Dockerfile à son Image

Qu'est-ce qu'une image ?


  1. Un ensemble de commandes d'installation
  2. Identifié par un tag organisation/nom:tag
  3. Un empilement de couches de filesystems
  4. Se configure avec un fichier Dockerfile
  5. Qui peut utiliser le contenu du répertoire du Dockerfile
  6. Qui doit se trouver dans un répo git
docker toolbox
docker logo

La Toolbox : Un Dockerfile à son Image

Syntaxe d'un Dockerfile


FROM <image> : image utilisée comme base de la future image
MAINTAINER <name> : auteur de l'image
ENV <key> <value> : variable d'environnement
RUN <command> : exécute la commande d'installation sur l'image
COPY <src> <dest> : ajoute un fichier local dans l'image
VOLUME ["/<dir>"] : répertoire externe monté au démarrage
EXPOSE <port>] : port réseau exposé par le conteneur
CMD ["executable", "param1",...] : commande lancée au démarrage

WORKDIR ["/<dir>"] : devient le répertoire interne courrant
USER <user> : utilisateur Linux utilisé lors du démarrage
ONBUILD <command> : commande executée dans l'image fille
ARG <name>[=<default value>] : argument utilisé lors du build (http_proxy)
LABEL <key>=<value> : étiquette associée à l'image
docker logo

La Toolbox : Un Dockerfile à son Image

Un example de Dockerfile


# Se base sur l'image ubuntu version 14.04
FROM ubuntu:14.04
MAINTAINER Docker-Noumea
RUN apt-get update & \
    apt-get install -y nginx
RUN echo "\ndaemon off;" >> /etc/nginx/nginx.conf
VOLUME ["/usr/share/nginx/html/"]
EXPOSE 80
CMD ["nginx"]
docker logo

La Toolbox : Un Dockerfile à son Image

Quelques astuces pour bien constuire son Dockerfile


  1. Préciser la version de l'image de base
  2. Choisir une image de base légère (Alpine)
  3. Supprimer les caches d'installation
  4. N'installer que le strict nécessaire
  5. Placer en haut les instructions les plus longues
  6. Placer en bas les instructions qui changent le plus
  7. Regrouper les instructions cohérentes
  8. En séparant les instructions sur plusieurs lignes
  9. Utiliser un .dockerignore
  10. Ne lancer qu'un process par container

Utiliser la barre espace ou les flèches pour se déplacer