Contenu connexe

Similaire à Docker nice meetup #1 construire, déployer et exécuter vos applications, partout !(20)

Dernier(20)

Docker nice meetup #1 construire, déployer et exécuter vos applications, partout !

  1. CONSTRUIRE, DEPLOYER EXÉCUTER VOS APPLICATIONS PARTOUT! @gandi_net @wizishop @epitechnice @dockernice #1 #dockernice
  2. Conférence • Qu'est ce que Docker • Installation / Architecture • Déploiement d’un cluster avec swarm. Ateliers • Application X11 dans docker • Environnement de dev avec docker-compose Adrien Schaller Sysadmin Orange HEBEX CCL
  3. Damien Lallement Directeur Pédagogique à Epitech Nice et manager du chapitre while42 de Nice
  4. Qu'est ce que Docker René Cotton CTO WiziShop
  5. Le tableau infernal du déploiement
  6. Le tableau infernal du transport
  7. La solution pour le transport
  8. Le tableau devient limpide
  9. La solution pour le deploiement
  10. Le tableau devient limpide ici aussi
  11. Définition Build, Ship and Run Any App, Anywhere
  12. Qu'est ce que Docker ▪ Embarquer une application dans un container virtuel exécutable sur tout type d’environnement ▪ Faciliter les déploiements d'une application, et la gestion du dimensionnement de l'infrastructure sous-jacente ▪ Open source (sous licence Apache 2.0) ▪ Société américaine, qui a été lancée par le Français Solomon Hykes.
  13. Comparaison VM / Docker App Bin / Lib OS invité Hyperviseur OS hôte Serveur physique Bin / Lib OS invité App Bin / Lib OS invité App App Bin / Lib OS hôte Serveur physique Bin / Lib Bin / Lib AppApp Virtualisation Containers
  14. Je peux me debarrasser des VMs ? Non!Pas encore…
  15. Quelques chiffres
  16. 2 ansAge de la société 25 MoTaille nécessaire pour installer Boot2Docker sur votre machine 45 300Nombre de container publié par les utilisateurs sur le HUB
  17. Dernière levé de fond à ajouter aux 40 millions en septembre dernier 95 000 000 $
  18. Olivier Revollat Développeur web pour la ville de Nice ARCHITECTURE
  19. Containers ▪ Virtualisation légère de processus ▪ Isolation fournie par les fonctionnalités du noyau Linux (v. >3.10) Docker ▪ Portabilité des containers ▪ Concept d'images
  20. CORE CONCEPTS
  21. Control groups (a.k.a cgroups) Contrôler/limiter les ressources utilisées par un container (cpu, mémoire, ...) https://docs.docker.com/reference/run/#runtime-constraints-on-cpu-and-memory -m="": Memory limit (format: <number><optional unit>, where unit = b, k, m or g) -memory-swap="": Total memory limit (memory + swap, format: <number><optional unit>) -c, --cpu-shares=0 CPU shares (relative weight)
  22. NAMESPACE Un “container” est un terme générique qui désigne un ensemble de namespace docker run alpine ps aux docker run alpine ip addr show docker run --net=host alpine ip addr show docker run --net=none alpine ip addr show docker run alpine mount ● The pid namespace: Used for process isolation (PID: Process ID). ● The net namespace: Used for managing network interfaces (NET: Networking). ● The ipc namespace: Used for managing access to IPC resources (IPC: InterProcess Communication). ● The mnt namespace: Used for managing mount-points (MNT: Mount). ● ​User namespace : mapping UID container <--> host. Non encore implémenté.
  23. CAPABILITIES Permet de donner plus ou moins de privilèges système à un container : en rapport avec l’aspect sécurité --cap-add: Add Linux capabilities --cap-drop: Drop Linux capabilities --privileged=false: Give extended privileges to this container --device=[]: Allows you to run devices inside the container without the --privileged flag. Ex.: docker run --device=/dev/snd:/dev/snd ... docker run --cap-add=ALL --cap-drop=MKNOD ... ● Par défaut les container sont lancés sans privilèges ● Ex de capabilities : mount operation, raw sokets (packet spoofing), creation device, load module kernel, … ● http://man7.org/linux/man-pages/man7/capabilities.7.html
  24. IMAGES Système de et fichier méta données docker images [--all] docker images | grep alpine # notez l'identifiant de l'image docker run -t -i alpine sh # editer un fichier dans container # Si on sort du container à ce stade la modif est perdue # Pour la rendre durable : docker commit -m "edition d'un fichier" <ID_CONTAINER> revollat/alpine # Créer à partir d'une archive cat exampleimage.tgz | docker import - exampleimagelocal:new ● Métaphore : en POO la Classe est à l'image ce que l'instance objet est au container ● Couches (layers) /union FS / "lecture-seul" ● Copy-On-Write pour écriture ● Multiples container / Images unique / Ecriture du delta Visualiser les couches : https://imagelayers.io/?images=revollat%2Fh2o:latest
  25. VOLUMES docker run --name mysql -v /my/custom:/etc/mysql/conf.d -v /my/own/datadir:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql ● Partage de données entre plusieurs containers ● Partage de données entre l'hote et le container ● bypass Union FS ● Persistent (même si un container est arrête)
  26. Registry stockage des images, push/pull HUB gestion utilisateurs, authentification … Api Contrôle du daemon Docker via API HTTP RESTful
  27. Dockerfile git clone https://github.com/revollat/hello-world # compiler assembleur (faut nasm sur votre machine) make # Créer une image vide :) tar cv --files-from /dev/null | docker import - vide # voir Dockerfile # Build à partir du Dockerfile docker build -t revollat/hello-epitech . # Taille de l'image --> 225 Octets, qui dit mieux ? # Exécution docker run revollat/hello-epitech # Envoi sur le Hub docker push revollat/hello-epitech # De votre coté docker run revollat/hello-epitech Construisons le plus petit Container du monde et revoyons les notions abordées
  28. INSTALLATION René Cotton CTO WiziShop
  29. SWARM Olivier Revollat Développeur web pour la ville de Nice
  30. Merci! DES QUESTIONS? @gandi_net @wizishop @epitechnice @dockernice

Notes de l'éditeur

  1. a finir de remplir
  2. Je pense qu’il serait mieux de faire ce slide pendant l’attelier ?