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. 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
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. What is ?
• Docker is a whole platform for using containers
• Includes tools for:
• container sharing
• orchestrations, clustering, etc.
8. What is ?
• Docker is for Linux only
• But…Microsoft works on Docker for Windows
• Apple (MacOS) = no native support planned
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
12. 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
13. 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
14. 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
38. 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/
39. 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
40. Docker in Cloud
• Digital Ocean
• UI Tutum.co – worth to try!
• Amazon
• Microsoft Azure
• Google Cloud
41. $ 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
44. 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…
47. Run GUI in Docker?
• https://blog.jessfraz.com/post/docker-containers-on-the-desktop/
• #Demo 06
48.
49. Dockercraft
• A simple Minecraft Docker client, to visualize and manage Docker
containers.
50. Live Migration!
• Migration of running container from one host to second
• https://blog.docker.com/2015/11/dockercon-eu-2015-container-
migration-tool/
51. What’s in Docker roadmap?
• Official ARM support
• Docker on Windows Server
• Docker on IBM systems, Solaris
53. 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 (!!!!)
55. 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
56. 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 {}
57. 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 ?
58. Links:
• My demos
• https://github.com/damovsky/jug-ostrava-docker
• Yowie – Open source project by @VitekTajzich
• https://github.com/vendavo/yowie