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
44
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
100
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
Zero Data Loss Autonomous Recovery Service サービス概要
oracle4engineer
PRO
1
4.8k
Oracle Cloudの生成AIサービスって実際どこまで使えるの? エンジニア目線で試してみた
minorun365
PRO
4
300
怖くない!ゼロから始めるPHPソースコードコンパイル入門
colopl
0
180
いまからでも遅くないコンテナ座学
nomu
0
140
Qiita埋め込み用スライド
naoki_0531
0
5.3k
クレカ・銀行連携機能における “状態”との向き合い方 / SmartBank Engineer LT Event
smartbank
2
100
AWS re:Invent 2024 ふりかえり勉強会
yhana
0
500
新機能VPCリソースエンドポイント機能検証から得られた考察
duelist2020jp
0
230
[JAWS-UG新潟#20] re:Invent2024 -CloudOperationsアップデートについて-
shintaro_fukatsu
0
120
終了の危機にあった15年続くWebサービスを全力で存続させる - phpcon2024
yositosi
27
24k
TSKaigi 2024 の登壇から広がったコミュニティ活動について
tsukuha
0
170
C++26 エラー性動作
faithandbrave
2
830
Featured
See All Featured
Designing Experiences People Love
moore
138
23k
Six Lessons from altMBA
skipperchong
27
3.5k
Thoughts on Productivity
jonyablonski
68
4.4k
YesSQL, Process and Tooling at Scale
rocio
170
14k
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
356
29k
How to Ace a Technical Interview
jacobian
276
23k
Visualization
eitanlees
146
15k
Producing Creativity
orderedlist
PRO
342
39k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
29
2k
Imperfection Machines: The Place of Print at Facebook
scottboms
266
13k
The Straight Up "How To Draw Better" Workshop
denniskardys
232
140k
The Success of Rails: Ensuring Growth for the Next 100 Years
eileencodes
44
6.9k
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