Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
NLUUG 2014: Zero to Docker in 20s
Search
Steeve Morin
May 15, 2014
Technology
0
42
NLUUG 2014: Zero to Docker in 20s
Steeve Morin
May 15, 2014
Tweet
Share
More Decks by Steeve Morin
See All by Steeve Morin
BazelCon 2019 - Bazel & Kubernetes: Develop like it’s production
steeve
0
99
boot2docker: Zero to Docker in 20s
steeve
2
420
boot2docker at the Paris Docker Meetup
steeve
7
3.5k
XBMCtorrent: Torrent Streaming for XBMC - Paris Tech Talks
steeve
0
1.2k
Other Decks in Technology
See All in Technology
データ活用促進のためのデータ分析基盤の進化
takumakouno
2
510
QAEチームが辿った3年 ボクらが改善業務にスクラムを選んだワケ / 20241108_cloudsign_ques23
bengo4com
0
590
ドメイン名の終活について - JPAAWG 7th -
mikit
31
18k
Engineering at LY Corporation
lycorp_recruit_jp
0
340
AI機能の開発運用のリアルと今後のリアル
akiroom
0
250
株式会社ログラス − エンジニア向け会社説明資料 / Loglass Comapany Deck for Engineer
loglass2019
3
28k
Deno+JSRでパッケージを作って公開する
askua
0
120
10分でわかるfreeeのQA
freee
1
3.5k
第23回Ques_タイミーにおけるQAチームの在り方 / QA Team in Timee
takeyaqa
0
190
mikroBus HAT を用いた簡易ベアメタル開発
tarotene
0
270
徹底比較!HA Kubernetes ClusterにおけるControl Plane LoadBalancerの選択肢
logica0419
2
140
20241108_CS_LLMMT
shigashiyama
0
250
Featured
See All Featured
The Art of Programming - Codeland 2020
erikaheidi
52
13k
ReactJS: Keep Simple. Everything can be a component!
pedronauck
665
120k
The Invisible Side of Design
smashingmag
297
50k
Gamification - CAS2011
davidbonilla
80
5k
Stop Working from a Prison Cell
hatefulcrawdad
267
20k
Why You Should Never Use an ORM
jnunemaker
PRO
54
9k
Fight the Zombie Pattern Library - RWD Summit 2016
marcelosomers
231
17k
GraphQLの誤解/rethinking-graphql
sonatard
67
10k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
Building Better People: How to give real-time feedback that sticks.
wjessup
364
19k
10 Git Anti Patterns You Should be Aware of
lemiorhan
654
59k
Side Projects
sachag
452
42k
Transcript
BOOT2DOCKER Zero to Docker in 20s Steeve Morin @steeve
‘SUP • @steeve • independent, always for hire • <LANGUAGE>-ista
• wingsuiter (because fuck yeah)
None
–Every developer ever “Works on my machine.”
None
It’s a pretty big problem.
THE MATRIX FROM HELL My Machine Your Machine QA Staging
Prod Web App ? ? ? ? ? Backoffice ? ? ? ? ? Queue ? ? ? ? ? Workers ? ? ? ? ? DB ? ? ? ? ?
THE MATRIX FROM HELL ? ? ? ? ? ?
? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ?
THE SHIPPING CONTAINER
WHY IT WORKS • Separation of concerns • Goods are
packed as containers • Shipping companies only care about shipping containers • Everything built around containers
THE MATRIX FROM HELL
LINUX CONTAINERS • Since Linux 3.0 • But only use
from 3.8 • Shared kernel • Isolated processes • Startup is fast (100ms fast) • Very light
DOCKER IS CONTAINERS FOR SOFTWARE • Lightweight virtualization • Leverages
Linux Containers • No performance hit (unlike VMs *wink wink*) • Devs supply docker images • Ops deploy and run docker images
THE MATRIX FROM HELL My Machine Your Machine QA Staging
Prod Web App Backoffice Queue Workers DB
FOR DEVS • My code • My libraries • My
dependencies • My linux distribution • My data
FOR OPS • Logging • Network access • Monitoring •
Permissions, throttling • CPU, RAM, DISK
WORKFLOW • git like (commit, tag, push, pull) • Run
image in container • Modify container as needed • Commit container as new image • Tag complete image • Push image when ready
YOUR FIRST CONTAINER $ docker run -i -t ubuntu bash
/# apt-get -y update /# apt-get install -y python /# wget http://srv/myapp.zip /# unzip myapp.zip $ docker commit <container_id> myapp $ docker tag myapp steeve/myapp $ docker push steeve/myapp
THE DOCKERFILE • A standard way to build Docker images
• Very simple syntax and limited scope • It’s simply run/commit ! • The whole environment in one file
THE DOCKERFILE $ cat Dockerfile FROM debian:jessie ! RUN apt-get
-y update RUN apt-get install -y python ! ADD myapp / ! EXPOSE 8080 CMD ["python", “/myapp/app.py"] $ docker build -t steeve/myapp $ docker run steeve/myapp
THE DOCKER REGISTRY • Repository of public Docker images •
http://index.docker.io • docker push to the registry • Can run registry locally • Registry is simply a Docker image!
BOOT2DOCKER
–Steeve Morin “When you think about it, the host system
is redundant to the Docker image… Right?”
TINY CORE LINUX • 9mb ISO (!) • Runs from
RAM • Boots in 3s • v4.7 at the time (5.3 now) • Binary repository • Pretty big community
DOCKER ON TCL • First try, July 2013 • Linux
Kernel 3.0 x86 without AUFS? • Custom Linux 3.10 with AUFS • Missing critical packages? • Cross compilation FTW • docker version works!!!
DOCKER ON TCL $ docker run -i -t busybox /bin/sh
lxc-start: Invalid argument - pivot_root syscall failed
DOCKER ON TCL: PART DEUX • December 3rd, 2013 •
Docker Global Hack Day • Better custom Kernel • 3.10/AUFS/CGROUPS… • Custom LXC patch
DOCKER ON TCL $ docker run -i -t busybox /bin/sh
#/
• Based on Tiny Core Linux 5.1 • 25mb ISO,
boots in 5-10s • Runs from RAM, read-only • updates are easy • Disk persistance • Built with Docker • Yes, boot2docker builds with boot2docker
0.9.1 (just released)
None
130 000 downloads
$ boot2docker-cli init $ boot2docker-cli up $ export DOCKER_HOST=localhost $
docker run -i -t busybox sh #/ boot2docker-cli + boot2docker OS + Docker OSX client = <3
None
None
None
THANK YOU github.com/boot2docker/boot2docker @steeve