dockerize the world
TRANSCRIPT
Dockerize the world!
Martin Damovský
My plan for today• Introduction to Docker• Some demos• Docker in Cloud• IoT and Docker• News from DockerCon 2015 in SF and Barcelona• Discussion + Beer
Who am I?• Software engineer (java, DBs, continuous integrations, docker, etc.)• Grew up in Orlová - near Ostrava !!!• VŠB TU Ostrava, Tieto Czech s.r.o. Ostrava, Gemalto in Prague• Now in Vendavo CZ in Prague• Twitter @damovsky
Who knows Docker?
What is ?Docker is an open platform for developing, shipping, and running applications. Docker is designed to deliver your applications faster. With Docker you can separate your applications from your infrastructure AND treat your infrastructure like a managed application. Docker helps you ship code faster, test faster, deploy faster, and shorten the cycle between writing code and running code.
What is ?...my version• Docker is new way of virtualization• you virtualize only the app and not the whole OS• + dozen of tools for container sharing, running, orchestrations, etc.• it’s a whole platform for using containers
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
Docker vs VM
How does it works?• Use 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
Docker Image
Base Image (debian/ubuntu/busybox…)
Image – Added Apache
Docker Container and its file system layers
Base Image (debian/ubuntu/busybox…)
Image – Added Apache
Writable Layer
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
Docker mottoBuild – build container with your app
Ship - use docker registry to distribute your app
Run - wherever docker runs, your app will run as well
Build – use Dockerfile• Recipe for building the image• Easy to transfer copy&paste• versioning in git, etc..
FROM debian:wheezy
RUN apt-get updateRUN apt-get install -y python2.7
CMD python2.7 -m SimpleHTTPServer 8000
Dockerfile “flow”1. create docker file2. build dockerfile
$ docker build -t myTagName .3. run container
$ docker run -d myTagName
Dockerfile• # Demo
Dockerfile commands• FROM
• RUN
• CMD
• ADD
• USER
• ENV
• etc….see at http://docs.docker.com/reference/builder/
Dockerfile vs layersFROM debian:wheezy
RUN apt-get updateRUN 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
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
Docker requirements• Technical:• Linux kernel 3.10 +
• Knowledge:• Linux
Docker on Windows / Mac OS
Linux
Docker daemon
Container
Container
Container
Docker client
Mac OS / Windows
VM with Linux
Docker daemon
Container
Container
Container
Docker client
Docker containers are small and fast!Demo #1 – debianDemo #2 - tomcat
Docker API•http://docs.docker.com/engine/reference/api/docker_remote_api_v1.21/•REST API•Live demo – with using curl
Docker itself is….like a java
Without tools and frameworks it’s useless
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• Docker Swarm – clustering the containers
Where can Docker be helpful?
…when new dev starts configuring project
…it works on my machine!
J2EE Application in Docker - demo• https://github.com/mgreau/docker4dev-tennistour-app
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/
RPI + Docker• LIVE DEMO – hypriot OS httpd• https://vimeo.com/131966874
DockerCon 2015 Challenge• How many containers could really be started on PI 2?• http://
www.slideshare.net/Docker/docker-online-meetup-27-raspberry-pi-dockercon-challenge
Docker in Cloud• Digital Ocean• UI Tutum.co – worth to try!
• Amazon• Microsoft Azure• Google Cloud
$ Price $• Digital Ocean: $5 / 512 MB, 1 core, 20 GB SSD, 1TB Transfer• Amazon: ?• 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
Docker and Microsoft ???
Docker and Microsoft ?
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• Demo ASP.NET in Docker
Docker and PHP ?• Piece of cake ;-)• Live demo
Docker orchestration• Docker Swarm• Kubernetes• Apache Mesos
Run GUI in Docker?• Why not?• https://blog.jessfraz.com/post/docker-containers-on-the-desktop/
Dockercraft• A simple Minecraft Docker client, to visualize and manage Docker
containers.
Live Migration!• https
://blog.docker.com/2015/11/dockercon-eu-2015-container-migration-tool/
What’s in Docker roadmap?• Official ARM support• Docker on Windows Server• Docker on IBM systems, Solaris
Troubles you may face….
….with Docker
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 (!!!!)
Docker Public Registry and license terms
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
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 ?
• $$$ = MAIN PROBLEM
Many thanks to…• Vendavo CZ for helping me with my presentation!• And for supporting our “after party”
• Tieto CZ for JUG Ostrava organization!• @VitekTajzich for his talk about Yowie
Links:• My demos• https://github.com/damovsky/jug-ostrava-docker
• Yowie – Open source project presented by @VitekTajzich• https://github.com/vendavo/yowie