Successfully reported this slideshow.
We use your LinkedIn profile and activity data to personalize ads and to show you more relevant ads. You can change your ad preferences anytime.

Dockerize the World - presentation from Hradec Kralove

5,792 views

Published on

Introduction to Docker + many useful tips and hacks + use cases for docker.

Published in: Software

Dockerize the World - presentation from Hradec Kralove

  1. 1. Dockerize the world! Martin Damovský
  2. 2. My plan for today • Introduction to Docker • Some demos • Docker in Cloud • IoT and Docker • News from DockerCon 2015 in SF and Barcelona
  3. 3. Who am I? • Software engineer (java, DBs, continuous integrations, docker, etc.) • Grew up in small city near Ostrava • Tieto Czech s.r.o. Ostrava, Gemalto in Prague • Now in Vendavo CZ in Prague • Twitter @damovsky
  4. 4. Who knows Docker?
  5. 5. Who uses Docker in production?
  6. 6. What is ? • Docker is virtualization technology • With docker you can: • virtualize only the app and not the whole OS • Isolate each app • Restrict CPU / memory / for each app • Easily distribute your app • Automate your development / test / production environment
  7. 7. What is ? • Docker is a whole platform for using containers • Includes tools for: • container sharing • orchestrations, clustering, etc.
  8. 8. What is ? • Docker is for Linux only • But…Microsoft works on Docker for Windows • Apple (MacOS) = no native support planned 
  9. 9. Docker project • Docker inc. is a sponsor of “Docker” open source project • https://github.com/docker/docker • Written in Go • Main contributors: Docker team, RedHat, IBM, Google, Cisco… • Initial release: 13 March 2013 • Operation system: Linux • www.docker.com
  10. 10. Docker vs VM
  11. 11. How does it works? • Use Linux kernel support for isolation (CPU, memory, I/O, network….) • Cgroups – linux kernel feature to limit resource usages • Namespaces – linux kernel feature to isolate services from each other • Earlier LXC – https://linuxcontainers.org • Now – runC (Libcontainer) https://github.com/opencontainers/runc
  12. 12. Docker motto Build – build container with your app Ship - use docker registry to distribute your app Run - wherever docker runs, your app will run as well
  13. 13. DockerFile = cookbook for docker image • Recipe for building the image • Easy to transfer copy&paste • Easy for versioning in Git, etc.. FROM debian:wheezy RUN apt-get update RUN apt-get install -y python2.7 CMD python2.7 -m SimpleHTTPServer 8000
  14. 14. Docker “flow” 1. create docker file 2. build dockerfile $ docker build -t myTagName . 3. run container $ docker run -d myTagName
  15. 15. Dockerfile • # Demo 01 • https://asciinema.org/a/7m72btfpczbshfkxh26smwgqv
  16. 16. Dockerfile commands • FROM • RUN • CMD • ADD • USER • ENV • etc….see at http://docs.docker.com/reference/builder/
  17. 17. It’s all about the money! LAYERS!
  18. 18. Dockerfile vs layers FROM debian:wheezy RUN apt-get update RUN apt-get install -y python2.7 CMD python2.7 -m SimpleHTTPServer 8000 └─61f… Virtual Size: 85.1 MB Tags: debian:wheezy └─5b8.. Virtual Size: 93.4 MB └─604.. Virtual Size: 123.5 MB └─43e.. Virtual Size: 123.5 MB Tags: python:latest
  19. 19. Dockerfile, build, run • # Demo 02 • Python http server + Connect to container
  20. 20. Docker Image Base Image (debian/ubuntu/…)
  21. 21. Docker Image Base Image (debian/ubuntu/busybox…) Image – Added Apache
  22. 22. Docker Image Container Base Image (debian/ubuntu/busybox…) Image – Added Apache Writable Layer
  23. 23. Docker Container and its file system layers Base Image (debian/ubuntu/busybox…) Image – Added Apache Writable Layer Image – Added MySQL Writable Layer Container #1 Container #2
  24. 24. Docker registry • https://registry.hub.docker.com/ • Official repo (trusted builds) • WordPress, MySQL, NgInx, Node, CentOS, Ubuntu, Postgress, mongo, rails, ruby, java, python, golang, jenkins, php, tomcat, maven, httpd, … • Public repo with thousands of images • Integration with GitHub • You push the Dockerfile to github • Docker Registry builds the docker image for you
  25. 25. Docker requirements • Technical: • Linux kernel 3.10 + • Knowledge: • Linux, bash scripting, etc
  26. 26. Docker on Windows / Mac OS
  27. 27. Linux Docker daemon Container Container Container Docker client Mac OS / Windows VM with Linux Docker daemon Container Container Container Docker client
  28. 28. Docker API •http://docs.docker.com/engine/reference/api/d ocker_remote_api_v1.21/ •REST API for everything •Container management •Image management •Docker configuration, etc…
  29. 29. Docker itself is….like a java Without tools and frameworks it’s useless
  30. 30. Docker Toolbox • Docker engine • Kinematic – GUI, runs on MacOS + Windows • Docker Machine – automates Docker environment preparation • Docker Compose – define multi-container application in one file • Demo 03 • Docker Swarm – clustering the containers
  31. 31. Where can Docker be helpful?
  32. 32. …when new dev starts configuring project
  33. 33. …it works on my machine!
  34. 34. J2EE Application in Docker - demo
  35. 35. J2EE Application in Docker - demo • https://github.com/mgreau/docker4dev-tennistour-app • https://asciinema.org/a/2d6erl2tlu1j0b3rfvxwabnkv • #Demo 04
  36. 36. Docker and IoT (Raspberry Pi) • ARM vs x86/64 architecture • Docker to plan official support ARM • HypriotOS – linux distro for Raspberry • Hypriot OS based images: • https://hub.docker.com/u/hypriot/
  37. 37. RPI 2 + Docker = 2499 containers • LIVE DEMO – hypriot OS httpd • https://vimeo.com/131966874 • http://www.slideshare.net/Docker/docker-online-meetup-27- raspberry-pi-dockercon-challenge
  38. 38. Docker in Cloud • Digital Ocean • UI Tutum.co – worth to try! • Amazon • Microsoft Azure • Google Cloud
  39. 39. $ Price $ • Digital Ocean: $5 / 512 MB, 1 core, 20 GB SSD, 1TB Transfer • Amazon: it depends on many factors • Microsoft Azure • Google Cloud: free up to 5 nodes, 6+ nodes $0.15 HR/Cluster • Alternative: VSPFree.cz 4GB RAM, 8 cores, 900 Kč /3 Months
  40. 40. Docker and Microsoft ???
  41. 41. Docker and Microsoft ?
  42. 42. Docker and Microsoft ? • Microsoft contributes to docker • see pull request https://github.com/docker/docker/pull/9113 • Microsoft Azure supports docker • Native Docker on Windows Server is coming…
  43. 43. Docker and PHP ? • Piece of cake ;-) • #Demo 05
  44. 44. Docker orchestration • Docker Swarm • Kubernetes • Apache Mesos
  45. 45. Run GUI in Docker? • https://blog.jessfraz.com/post/docker-containers-on-the-desktop/ • #Demo 06
  46. 46. Dockercraft • A simple Minecraft Docker client, to visualize and manage Docker containers.
  47. 47. Live Migration! • Migration of running container from one host to second • https://blog.docker.com/2015/11/dockercon-eu-2015-container- migration-tool/
  48. 48. What’s in Docker roadmap? • Official ARM support • Docker on Windows Server • Docker on IBM systems, Solaris
  49. 49. Troubles you may face…. ….with Docker
  50. 50. Docker Registry - Image Repository • Public – no way for 99,9% apps • Private • Limitation – money & your internet connection speed • Local repo - can require some management • Authentication (users/passwords/roles, etc…) • cleaning olds images • disk space • backup (!!!!)
  51. 51. Docker Public Registry and license terms 
  52. 52. Unrealistic tutorials and demos • Demos = “wow effect” • Typical problem for production use – database in container • Database container can really be big! (>10 GB or more) • Data should be outside of container and backuped • Virtualization decreases the performance
  53. 53. Docker containers and images • Image is too big -> Squash layers • Container has been stopped, but it blocks the port... • Stopped != removed • docker ps -a -q | xargs -n 1 -I {} docker rm {}
  54. 54. Run Docker on dedicated machine only • You should use the latest Linux Kernel • Some bug fixes may require you to update Linux Kernel • Who can update Linux kernel in production? • Which file system to use? BTRFS / AUFS / ? • Which OS ? • Core OS • RancherOS • Well known like a CentOS, Red Hat, Ubuntu ?
  55. 55. Links: • My demos • https://github.com/damovsky/jug-ostrava-docker • Yowie – Open source project by @VitekTajzich • https://github.com/vendavo/yowie

×