Docker: Fire your Sysadmin and use Docker to build, ship and run any app, anywhere - ScotlandJS

Post on 19-Jul-2015

258 views 2 download

Tags:

Transcript of Docker: Fire your Sysadmin and use Docker to build, ship and run any app, anywhere - ScotlandJS

and use DOCKER toBuild, Ship and Run any App, Anywhere

FIRE YOUR SYSADMIN

SCOTLANDJS 2015 — PHIL REITHER

Django AppDatabaseFront-End

WorkersEmail

WordpressAdmin CRM

DEV DEV II LIVE STAGING QA INTERN

Django AppDatabaseFront-End

WorkersEmail

WordpressAdmin CRM

DEV DEV II LIVE STAGING QA INTERN

it’s A c

ompan

y!

what’s in

the box?

code, runtime,

libs, bins

Why

should I

care?

• It’s the same everywhere. • Separation of concerns. • Minimal setup-up costs. • Versioned environment.

ship the

entire

environment

Virtual

machine

DOCKER

}Host OS

Hardware

Docker

Bins & Libs Bins &Libs

AppB

AppA’

AppA

ContainerVi

rtua

l Mac

hine{

AppA

Bins &Libs

OS

Hypervisor

Host OS

Hardware

OS

Bins &Libs

AppA’

OS

Bins &Libs

AppB

~$#ps#&A#|#wc#&l#235#

~$#docker#run#ubuntu#ps#&A#PID##TTY##TIME######CMD###1##?####00:00:00##ps

Counting Processes

LXC

let’s

do this!

~$#docker#search#node#NAME##DESCRIPTION####################################STARS##OFFICIAL#node##Node.js#is#a#JavaScript&based#platform#for...##685####[OK]#iojs##io.js#is#an#npm#compatible#platform#origin...##65#####[OK]##...#

~$#docker#run#node#Unable#to#find#image#'node:latest'#locally#latest:#Pulling#from#node#29809ed33dfd:#Pulling#fs#layer#...

Run an image

~$#docker#run#&t#&i#ubuntu#/bin/bash#root:##

root:##apt&get#install#&y#git#Reading#package#lists...#Done#Building#dependency#tree#Reading#state#information...#Done#...

Install things

~$#docker#run#&v#~/Desktop/app:/code#&t#&i#node#root:##

root:##ls#/code#[files#from#host#/src/app]

Share folders

~$#docker#ps#ID############IMAGE##########COMMAND######NAME#e7bf8f45d7be##ubuntu:latest##"/bin/bash"##sick_euclid#

~$#docker#commit#sick_euclid#phil/new_image#cd9bd07d78733cb5a53fb1f41b5d2c99039fbd79a7526ce57410ca6df1e97e2b#

~$#docker#images#REPOSITORY######TAG######IMAGE#ID######VIRTUAL#SIZE#phil/new_image##latest###cd9bd07d7873##188.7#MB

Save images

too

easy!

docker-compose.yml

settings.py

Dockerfile

/code

Container “django”

postgres

Container “db”

~/Desktop/code

db:###image:#postgres#

django:###build:#.###command:#python#manage.py#runserver#0.0.0.0:8000###volumes:#####&#.:/code###ports:#####&#"8000:8000"###links:#####&#db

docker-compose.yml - [host]

~$#docker&compose#up#Attaching#to#django_db_1,#django_web_1#db_1##|#LOG:##database#system#is#ready#to#accept#connections#web_1#|#Django#version#1.8.1,#using#settings#‘local.settings'#...

Install things

FROM#python:2.7#ENV#PYTHONUNBUFFERED#1#RUN#mkdir#/code#WORKDIR#/code#ADD#requirements.txt#/code/#RUN#pip#install#&r#requirements.txt#ADD#.#/code/#

Dockerfile - [container “django”]

...#DATABASES#=#{#####'default':#{#

####}#}#...

settings.py - [container “django”]

########'ENGINE':#'django.db.backends.postgresql_psycopg2',#########'NAME':#'postgres',#########'USER':#'postgres',#########'PORT':#5432,#########'HOST':#'db',#

docker-compose.yml

settings.py

Dockerfile

/code

Container “django”

postgres

Container “db”

~/Desktop/code

Docker

cheat

sheet

http://tinyurl.com/scotlandjsdocker