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
48
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
120
boot2docker: Zero to Docker in 20s
steeve
2
420
boot2docker at the Paris Docker Meetup
steeve
7
3.6k
XBMCtorrent: Torrent Streaming for XBMC - Paris Tech Talks
steeve
0
1.2k
Other Decks in Technology
See All in Technology
新米エンジニアをTech Leadに任命する ー 成長を支える挑戦的な人と組織のマネジメント
naopr
1
350
可観測性は開発環境から、開発環境にもオブザーバビリティ導入のススメ
layerx
PRO
4
2.7k
組織全員で向き合うAI Readyなデータ利活用
gappy50
5
2.1k
AIエージェントによる業務効率化への飽くなき挑戦-AWS上の実開発事例から学んだ効果、現実そしてギャップ-
nasuvitz
5
1.6k
AI-ready"のための"データ基盤 〜 LLMOpsで事業貢献するための基盤づくり
ismk
0
110
Raycast AI APIを使ってちょっと便利なAI拡張機能を作ってみた
kawamataryo
1
240
AI時代に必要なデータプラットフォームの要件とは by @Kazaneya_PR / 20251107
kazaneya
PRO
4
610
Observability — Extending Into Incident Response
nari_ex
2
760
AIエージェントは「使う」だけじゃなくて「作る」時代! 〜最新フレームワークで楽しく開発入門しよう〜
minorun365
PRO
2
130
激動の時代を爆速リチーミングで乗り越えろ
sansantech
PRO
1
250
Playwrightで始めるUI自動テスト入門
devops_vtj
0
140
ラスベガスの歩き方 2025年版(re:Invent 事前勉強会)
junjikoide
0
920
Featured
See All Featured
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
333
22k
The Pragmatic Product Professional
lauravandoore
36
7k
It's Worth the Effort
3n
187
28k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
162
15k
Facilitating Awesome Meetings
lara
57
6.6k
The World Runs on Bad Software
bkeepers
PRO
72
11k
Improving Core Web Vitals using Speculation Rules API
sergeychernyshev
21
1.2k
We Have a Design System, Now What?
morganepeng
54
7.9k
Java REST API Framework Comparison - PWX 2021
mraible
34
8.9k
Rebuilding a faster, lazier Slack
samanthasiow
84
9.2k
Designing Experiences People Love
moore
142
24k
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
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