dockerize the world

55
Dockerize the world! Martin Damovský

Upload: damovsky

Post on 15-Apr-2017

585 views

Category:

Technology


0 download

TRANSCRIPT

Page 1: Dockerize the World

Dockerize the world!

Martin Damovský

Page 2: Dockerize the World

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

Page 3: Dockerize the World

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

Page 4: Dockerize the World

Who knows Docker?

Page 5: Dockerize the World

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.

Page 6: Dockerize the World

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

Page 7: Dockerize the World

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

Page 8: Dockerize the World
Page 9: Dockerize the World

Docker vs VM

Page 10: Dockerize the World

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

Page 11: Dockerize the World

Docker Image

Base Image (debian/ubuntu/busybox…)

Image – Added Apache

Page 12: Dockerize the World

Docker Container and its file system layers

Base Image (debian/ubuntu/busybox…)

Image – Added Apache

Writable Layer

Page 13: Dockerize the World

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

Page 14: Dockerize the World

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

Page 15: Dockerize the World

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

Page 16: Dockerize the World

Dockerfile “flow”1. create docker file2. build dockerfile

$ docker build -t myTagName .3. run container

$ docker run -d myTagName

Page 17: Dockerize the World

Dockerfile• # Demo

Page 18: Dockerize the World

Dockerfile commands• FROM

• RUN

• CMD

• ADD

• USER

• ENV

• etc….see at http://docs.docker.com/reference/builder/

Page 19: Dockerize the World

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

Page 20: Dockerize the World

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

Page 21: Dockerize the World

Docker requirements• Technical:• Linux kernel 3.10 +

• Knowledge:• Linux

Page 22: Dockerize the World

Docker on Windows / Mac OS

Page 23: Dockerize the World

Linux

Docker daemon

Container

Container

Container

Docker client

Mac OS / Windows

VM with Linux

Docker daemon

Container

Container

Container

Docker client

Page 24: Dockerize the World

Docker containers are small and fast!Demo #1 – debianDemo #2 - tomcat

Page 26: Dockerize the World

Docker itself is….like a java

Without tools and frameworks it’s useless

Page 27: Dockerize the World

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

Page 28: Dockerize the World

Where can Docker be helpful?

Page 29: Dockerize the World

…when new dev starts configuring project

Page 30: Dockerize the World

…it works on my machine!

Page 31: Dockerize the World

J2EE Application in Docker - demo• https://github.com/mgreau/docker4dev-tennistour-app

Page 32: Dockerize the World
Page 33: Dockerize the World

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/

Page 34: Dockerize the World

RPI + Docker• LIVE DEMO – hypriot OS httpd• https://vimeo.com/131966874

Page 35: Dockerize the World

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

Page 36: Dockerize the World

Docker in Cloud• Digital Ocean• UI Tutum.co – worth to try!

• Amazon• Microsoft Azure• Google Cloud

Page 37: Dockerize the World

$ 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

Page 38: Dockerize the World

Docker and Microsoft ???

Page 39: Dockerize the World

Docker and Microsoft ?

Page 40: Dockerize the World

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

Page 41: Dockerize the World

Docker and PHP ?• Piece of cake ;-)• Live demo

Page 42: Dockerize the World

Docker orchestration• Docker Swarm• Kubernetes• Apache Mesos

Page 44: Dockerize the World
Page 45: Dockerize the World

Dockercraft• A simple Minecraft Docker client, to visualize and manage Docker

containers.

Page 47: Dockerize the World

What’s in Docker roadmap?• Official ARM support• Docker on Windows Server• Docker on IBM systems, Solaris

Page 48: Dockerize the World

Troubles you may face….

….with Docker

Page 49: Dockerize the World

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 (!!!!)

Page 50: Dockerize the World

Docker Public Registry and license terms

Page 51: Dockerize the World

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

Page 52: Dockerize the World

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

Page 53: Dockerize the World
Page 54: Dockerize the World

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

Page 55: Dockerize the World

Links:• My demos• https://github.com/damovsky/jug-ostrava-docker

• Yowie – Open source project presented by @VitekTajzich• https://github.com/vendavo/yowie