Containers, Docker, and Microservices: the Terrific Trio from Jérôme Petazzoni
Containers, Docker, and Microservices: the Terrific Trio
- 1. Containers, Docker, and Microservices
- 2. Jérôme Petazzoni (@jpetazzo) Grumpy French DevOps - Go away or I will replace you with a very small shell script Runs everything in containers - Docker-in-Docker - VPN-in-Docker - KVM-in-Docker - Xorg-in-Docker - ...
- 3. Jérôme Petazzoni (@jpetazzo) Built and scaled dotCloud PAAS with 106 services (I counted them!) - some examples: hosts, nats, containers, builds, snapshots, metrics, billing, user permissions, infrastructure management, logs, ...
- 4. outline
- 5. Outline Why microservices? What's the challenge? How does Docker help? Getting started with stacks of containers
- 6. why microservices
- 7. What is a microservice architecture? Break big application down into many small services Example: e-commerce - web front-end - catalog of products - inventory/stock management - shipping calculator - payment processor - billing/invoicing - recommendation engine - user profiles
- 8. Why is this useful? Use different stacks for different services (can be seen as both good and bad!) Replace (e.g. refactor) individual services easily (service boundary enforces API separation) Decouples deployment; requires less coordination (deploy early, deploy often; more agility) Helps implementing Jeff Bezos' “two-pizza rule” (many small teams overperform a single big team) More effective “ownership” of services
- 9. what's the challenge?
- 10. Issues we will not address today Fast, efficient RPC calls - ZeroRPC - Cap'n Proto - XMLRPC - SOAP - Dnode - REST - Queues (like AMQP), for long-running/async operations
- 11. Issues we will not address today How to break application down in small parts - this is not always easy - try to get help from people who have already done it - but: it helps to achieve a better architecture (I promise)
- 12. Issues we could address today Our app is now spread across multiple services Those services might (will) end up on many machines Some of those services might (will) be scaled out Consequences: - our services will have to discover each other's location - we will have to learn about load balancing
- 13. Issues we will address today We're deploying 42 microservices instead of 1 app We want to be able to deploy often Obvious consequence: our deploy process must rock - it must be fast - it must be reliable - it must be automated
- 14. how does Docker help?
- 15. the big picture
- 16. Docker's mission build, ship, and run any application, anywhere
- 17. Say again? Build: package your application in a container Ship: move that container from a machine to another Run: execute that container (i.e. your application) Any application: anything that runs on Linux Anywhere: local VM, cloud instance, bare metal...
- 18. build
- 19. Dockerfile FROM ubuntu:14.04 MAINTAINER Docker Team <education@docker.com> RUN apt-get update RUN apt-get install -y nginx RUN echo 'Hi, I am in your container' >/usr/share/nginx/html/index.html CMD [ "nginx", "-g", "daemon off;" ] EXPOSE 80
- 20. ship
- 21. Docker Hub Image name should be <username>/<reponame> e.g.: jpetazzo/web docker push docker pull
- 22. Docker Hub Image name should be <username>/<reponame> e.g.: jpetazzo/web docker push docker pull It's magic!
- 23. run
- 24. Execution is fast and lightweight Let's look at a few benchmarks
- 25. Benchmark: container creation $ time docker run ubuntu echo hello world hello world real 0m0.258s Disk usage: less than 100 kB Memory usage: less than 1.5 MB
- 26. Benchmark: infiniband
- 27. Benchmark: boot OpenStack instances
- 28. Benchmark: memory speed
- 29. Let's start a few containers Just for run. Eh, for fun.
- 30. any app
- 31. If it runs on Linux, it will run in Docker Web apps API backends Databases (SQL, NoSQL) Big data Message queues And more
- 32. If it runs on Linux, it will run in Docker Firefox-in-Docker Xorg-in-Docker VPN-in-Docker Firewall-in-Docker Docker-in-Docker KVM-in-Docker
- 33. anywhere
- 34. anywhere* *Limitations may apply.
- 35. Docker has official support for: Intel 64 bits (x86_64) code Recent kernels (3.8 and above) Coming soon: Windows Containers (If you have questions about this, ask Microsoft!)
- 36. “Rumors” say that people also run on: Intel 32 bits ARM 32 and 64 bits MIPS Power8 Older kernels (please don't) Note: the main issue is that the Docker Hub registry is not arch-aware, and images are not compatible.
- 37. CONTAINERS They're stable, they said. Stack them, they said.
- 38. running stacks of containers
- 39. First steps Online tutorial (in browser, JS based, zero install) http://www.docker.com/tryit/ boot2docker (25 MB universal VM image) http://boot2docker.io/ Scary install script curl -sSL https://get.docker.com/ | sh We have ordinary packages too! And most clouds have Docker images
- 40. Checklist Install boot2docker Run your first container (echo hello world) Write your first Dockerfile Create your Docker Hub account (free) Push image to Docker Hub Setup automated build Run your first complex app with Fig
- 41. Fig Run your stack with one command: fig up Describe your stack with one file: fig.yml Example: run a (one node) Mesos cluster - Mesos master - Mesos slave - Volt framework
- 42. master: image: redjack/mesos-master command: mesos-master --work_dir=/mesos ports: - 5050:5050 slave: image: redjack/mesos-slave links: - master:master command: mesos-slave --master=master:5050 --containerizers=docker,mesos volumes: - /sys/fs/cgroup:/sys/fs/cgroup - /var/run/docker.sock:/var/run/docker.sock - /usr/bin/docker:/bin/docker volt: image: volt/volt links: - master:master command: --master=master:5050 ports: - 8080:8080
- 43. ?
- 44. what's next?
- 45. Advanced topics All Things Docker http://blog.docker.com/ Running your own private registry https://github.com/docker/docker-registry Containers and security http://www.slideshare.net/jpetazzo/docker-linux-containers-lxc-and-security https://medium.com/@ewindisch/on-the-security-of-containers-2c60ffe25a9e Service discovery (look for “ambassador pattern”) … And more!
- 46. thank you! questions?
- 47. Would You Like To Know More? Get in touch on Freenode #docker #docker-dev Ask me tricky questions jerome@docker.com Get your own Docker Hub on prem sales@docker.com Follow us on Twitter @docker, @jpetazzo
No comments:
Post a Comment