Docker - YaJUG

1 345 vues

Publié le

Présentation de Docker en 1h30 au YaJUG

Publié dans : Technologie
0 commentaire
5 j’aime
Statistiques
Remarques
  • Soyez le premier à commenter

Aucun téléchargement
Vues
Nombre de vues
1 345
Sur SlideShare
0
Issues des intégrations
0
Intégrations
121
Actions
Partages
0
Téléchargements
60
Commentaires
0
J’aime
5
Intégrations 0
Aucune incorporation

Aucune remarque pour cette diapositive
  • Developpment
    Staging
    CI
    Not production at this day
  • Start, stop and rebuild services
    View the status of running services
    Stream the log output of running services
    Run a one-off command on a service
  • Docker - YaJUG

    1. 1. :: @YaJUG Des containers de la cale au pont
    2. 2. Nicolas MULLER 13 ans de BTP Membre MARSJUG Membre LAB-AIXpérimentation
    3. 3. Plan de la soirée Once upon a time... Installation + distribution Interconnexion de containers Live demos Tomcat dream architecture Docker compose Docker machine Feedback
    4. 4. Docker :: Qui a déjà joué avec ?
    5. 5. About Docker Fondé en 2009 Précédemment DotCloud Docker in 2015 Deux levées de fonds
    6. 6. Pourquoi Docker ? L’industrie logiciel a changé Fin des grosses applications monolithiques Micro-services Processus de déploiement
    7. 7. Key Rules Design based on Unix principles for composability and simplicity Emphase the ecosystem Do what’s best for user
    8. 8. Un problème toujours vrai en 2015
    9. 9. La matrice de l’enfer
    10. 10. Logistique
    11. 11. Architecture Docker engine Docker client Architecture REST Protocole HTTP(s) Ecrit en GO
    12. 12. Docker :: Containers Virtualisation d’environnement d’exécution Processeurs Mémoire vive Réseau Système de fichiers Contraire de la virtualisation de machine
    13. 13. Full virtualization Host hardware Host OS Hypervisor Guest OS virt. App1 App2 App3 App1 App2 App3 Guest OS virt. VMDocker containers Host hardware DockerEngine App1 App2 App3 App4 App5 container Comparaison Kernel
    14. 14. And the winner is... Great isolation but overhead Less isolation but less overhead Conclusion
    15. 15. What does it hide ?
    16. 16. Technologies sous-jacentes CHROOT LXC CGROUPS Namespace
    17. 17. Previously :: JAILS / DZONE
    18. 18. Docker vs OpenVZ Architecture Docker sees a container as a application/service OpenVZ sees a container as a VPS OpenVZ Template for empty linux machine Patched linux kernel
    19. 19. Des processus avec des guirlandes
    20. 20. :: installation
    21. 21. Installation dev Linux native Docker Toolbox Windows + Mac Toute petite VM (25 Mo)
    22. 22. Installation production Linux classique debian ubuntu centos Distribution dédiée Projet Atomic CoreOS Rancher OS
    23. 23. :: Images
    24. 24. Programmation Orientée objet Les images sont des classes Les containers sont les objets La couche reprend le concept d’héritage
    25. 25. Qu’est ce qu’une image ?
    26. 26. Différences entre images et containers Une image est créé : à partir d’un dockerfile à partir d’un commit d’un container Une image est un système de fichier en lecture seule Un container est un ensemble de processus tournant dans un système de fichier en lecture/écriture Docker utilise le principe du COW pour démarrer très vite les containers
    27. 27. :: Dockerfile
    28. 28. Dockerfile exemple
    29. 29. Liste des commandes FROM MAINTENER RUN CMD EXPOSE ADD COPY ENTRYPOINT VOLUME USER WORKDIR ONBUILD ENV
    30. 30. Builder son image Pour builder l’image docker build -t demojug/tomcat . Pour lancer un container à partir de l’image docker run -d demojug/tomcat docker run -it demojug/tomcat bash
    31. 31. Best practices Eviter d’installer trop de chose Au mieux un processus par container Minimiser le nombre de couches Utiliser .dockerignore Depuis peu, utilisez les LABEL NO UPGRADE / NO BOOT INIT DIVISEZ POUR REGNER Utilisez vos propres images !
    32. 32. :: Commands
    33. 33. Liste des images
    34. 34. Recherche des images
    35. 35. Quelques commandes docker run -d jpetazzo/clock docker ps docker ps -lq docker logs --tail 3 <containerId> docker logs --tail 1 --follow <containerId> docker kill $(docker ps -a -q) docker rmi $(docker images -q)
    36. 36. Télécharger des images Explicitement : docker pull Implicitement : docker run
    37. 37. :: volumes
    38. 38. :: network
    39. 39. Isolation by design each container runs isolated Container WEB Container DB TOMCAT 8080 MYSQL 3306 Bridge docker0 Hôte
    40. 40. Container WEB Container DB TOMCAT 8080 MYSQL 3306 Bridge docker0 Hôte 8080 exposé 3306 exposé + Dockerfile : EXPOSE <port> + docker run … p <port> Exposition ports
    41. 41. Lien entre containers Container WEB Container ‘db’ TOMCAT 8080 MYSQL 3306 Bridge docker0 Hôte ENV VARIABLE DBALIAS_PORT DBALIAS_ADDR DBALIAS_TCP DBALIAS_PROTO … ... Exemple : Docker run … -link db:dbalias LINK
    42. 42. Mapping de ports Container WEB Container ‘db’ TOMCAT 8080 MYSQL 3306 Bridge docker0 Hôte IP_INTERFACE Réseau externe docker run … -p 80:8080
    43. 43. Options :: réseau docker run … -- net = bridge docker run … -- net = host docker run … -- net = CONTAINER_ID docker run … -- net = none
    44. 44. :: Cycle de vie
    45. 45. Host 2 OS Docker EngineDocker Engine Host 1 OS Source code repository ContA Build Push Search Pull Run Dockerfile for A Docker image registry Image A CRÉATION, GESTION ET DEPLOIEMENT
    46. 46. Système de cache RUN apt-get install -y curl wget RUN apt-get install -y wget curl RUN apt-get update ADD / COPY docker build --no-cache ...
    47. 47. :: plus loin
    48. 48. Docker :: everywhere Windows Server Container Support Docker Engine Linux Container Support (LXC) Docker Engine Windows Server Linux Docker Client
    49. 49. Chrome in Docker
    50. 50. https://github.com/jpetazzo/dind
    51. 51. Dev / Test Utiliser une CI pour construire les images Utiliser les containers pour Jouer les tests unitaires Recréer l’environnement d’intégration pour les tests Bénéfices Avoir la garantie d’un environnement propre à chaque lancement des tests Avoir la possibilité de jouer toute l’intégration dans un seul container
    52. 52. :: limites
    53. 53. Limites :: production Images building Garbage collection Logging Filesystems Security Image layer and transportation
    54. 54. :: Compose Multi-container application into a single file
    55. 55. Where to use it ?
    56. 56. docker-compose [command] --help
    57. 57. mysqldb: image: mysql:latest environment: MYSQL_USER: mysql MYSQL_PASSWORD: mysql MYSQL_DATABASE: petclinic MYSQL_ROOT_PASSWORD: supersecret volumes: - datadir:/var/lib/mysql mytomcat: build: tomcat8 environment: CATALINA_OPTS: "-Xmx1024m" volumes: - webapps:/tomcat/webapps links: - mysqldb:webdb ports: - 8080:8080 docker-compose.yml
    58. 58. Commands up with daemon stop / start logs
    59. 59. :: Tomcat
    60. 60. Images Tomcat https://registry.hub.docker.com/search?q=tomc at&searchfield= https://github.com/rossbachp/dockerbox/tree/m aster/docker-images/tomcat8
    61. 61. :: Machine
    62. 62. Créer une machine locale
    63. 63. Commandes
    64. 64. :: Swarm
    65. 65. Utiliser swarm avec machine docker run swarm create 5b7220ee08396d85d08dd9516946b226 docker-machine create -d virtualbox --swarm --swarm-master --swarm-discovery token://5b7220ee08396d85d08dd9516946b226 head docker-machine create -d digitalocean --swarm --swarm-discovery token://31e61710169a7d3568502b0e9fb09d66 worker-00 docker-machine create -d azure --swarm --swarm-discovery token://31e61710169a7d3568502b0e9fb09d66 worker-01 $(docker-machine env --swarm head) docker info
    66. 66. :: RancherOS
    67. 67. Merci

    ×