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
Docker: Try to Contain Your Excitement
Search
Tyler Bird
April 24, 2014
Programming
1
120
Docker: Try to Contain Your Excitement
An introduction to the core concepts of docker.
Tyler Bird
April 24, 2014
Tweet
Share
More Decks by Tyler Bird
See All by Tyler Bird
Capistrano: A three act play in multistage deployment strategies.
7hunderbird
1
2.3k
Build a chef-solo Development Environment with Vagrant
7hunderbird
3
2.3k
Using Chef-Solo
7hunderbird
1
2.1k
Rake: Not Your Father's Build Tool
7hunderbird
0
820
Other Decks in Programming
See All in Programming
CEDEC2025 長期運営ゲームをあと10年続けるための0から始める自動テスト ~4000項目を50%自動化し、月1→毎日実行にした3年間~
akatsukigames_tech
0
120
WebAssemblyインタプリタを書く ~Component Modelを添えて~
ruccho
1
740
STUNMESH-go: Wireguard NAT穿隧工具的源起與介紹
tjjh89017
0
320
中級グラフィックス入門~効率的なメッシュレット描画~
projectasura
4
2.6k
PHPカンファレンス関西2025 基調講演
sugimotokei
6
1.1k
新しいモバイルアプリ勉強会(仮)について
uetyo
1
250
Constant integer division faster than compiler-generated code
herumi
2
570
DynamoDBは怖くない!〜テーブル設計の勘所とテスト戦略〜
hyamazaki
0
200
大規模FlutterプロジェクトのCI実行時間を約8割削減した話
teamlab
PRO
0
460
Gemini CLIの"強み"を知る! Gemini CLIとClaude Codeを比較してみた!
kotahisafuru
3
970
Scale out your Claude Code ~自社専用Agentで10xする開発プロセス~
yukukotani
9
1.8k
オホーツクでコミュニティを立ち上げた理由―地方出身プログラマの挑戦 / TechRAMEN 2025 Conference
lemonade_37
2
460
Featured
See All Featured
Become a Pro
speakerdeck
PRO
29
5.5k
Automating Front-end Workflow
addyosmani
1370
200k
The Invisible Side of Design
smashingmag
301
51k
The Cult of Friendly URLs
andyhume
79
6.5k
Distributed Sagas: A Protocol for Coordinating Microservices
caitiem20
332
22k
Building Adaptive Systems
keathley
43
2.7k
Fantastic passwords and where to find them - at NoRuKo
philnash
51
3.4k
Principles of Awesome APIs and How to Build Them.
keavy
126
17k
Building an army of robots
kneath
306
45k
A designer walks into a library…
pauljervisheath
207
24k
Done Done
chrislema
185
16k
VelocityConf: Rendering Performance Case Studies
addyosmani
332
24k
Transcript
Hello I’m Tyler Bird
Hello I’m Tyler Bird Work for Engine Yard
Hello I’m Tyler Bird Work for Engine Yard I love
DevOps
Text Docker
Text Docker Just try and contain your excitement
Who creates docker?
Homepage www.docker.io
The Team www.docker.io/team/
Docker on GitHub github.com/dotcloud/ docker/
When did docker arrive?
A Retrospective
A Retrospective Began as dotCloud
A Retrospective Began as dotCloud First commit January 18, 2013
A Retrospective Began as dotCloud First commit January 18, 2013
Version 0.1.0 shipped March 25, 2013
A Retrospective Began as dotCloud First commit January 18, 2013
Version 0.1.0 shipped March 25, 2013 11,400 GitHub stars, 1800+ forks
A Retrospective Began as dotCloud First commit January 18, 2013
Version 0.1.0 shipped March 25, 2013 11,400 GitHub stars, 1800+ forks October 29, 2013 dotCloud becomes Docker
A Retrospective Began as dotCloud First commit January 18, 2013
Version 0.1.0 shipped March 25, 2013 11,400 GitHub stars, 1800+ forks October 29, 2013 dotCloud becomes Docker Version 0.10 latest stable April 8, 2014
Hardware Virtualization
Hardware Virtualization 1966-1972 IBM CP/CMS
Hardware Virtualization 1966-1972 IBM CP/CMS 1989 Insignia SoftPC
Hardware Virtualization 1966-1972 IBM CP/CMS 1989 Insignia SoftPC 1997 Connectix
VirtualPC
Hardware Virtualization 1966-1972 IBM CP/CMS 1989 Insignia SoftPC 1997 Connectix
VirtualPC 1999 VMWare Workstation
Hardware Virtualization 1966-1972 IBM CP/CMS 1989 Insignia SoftPC 1997 Connectix
VirtualPC 1999 VMWare Workstation 199x-2002 Xen
Hardware Virtualization 1966-1972 IBM CP/CMS 1989 Insignia SoftPC 1997 Connectix
VirtualPC 1999 VMWare Workstation 199x-2002 Xen 2001 IBM AIX LPAR
Hardware Virtualization 1966-1972 IBM CP/CMS 1989 Insignia SoftPC 1997 Connectix
VirtualPC 1999 VMWare Workstation 199x-2002 Xen 2001 IBM AIX LPAR 2006 Amazon EC2
Hardware Virtualization 1966-1972 IBM CP/CMS 1989 Insignia SoftPC 1997 Connectix
VirtualPC 1999 VMWare Workstation 199x-2002 Xen 2001 IBM AIX LPAR 2006 Amazon EC2 2007 Sun Logical Domains
Hardware Virtualization 1966-1972 IBM CP/CMS 1989 Insignia SoftPC 1997 Connectix
VirtualPC 1999 VMWare Workstation 199x-2002 Xen 2001 IBM AIX LPAR 2006 Amazon EC2 2007 Sun Logical Domains 2007 Linux KVM
Hardware Virtualization 1966-1972 IBM CP/CMS 1989 Insignia SoftPC 1997 Connectix
VirtualPC 1999 VMWare Workstation 199x-2002 Xen 2001 IBM AIX LPAR 2006 Amazon EC2 2007 Sun Logical Domains 2007 Linux KVM 2007 InnoTek VirtualBox
Hardware Virtualization 1966-1972 IBM CP/CMS 1989 Insignia SoftPC 1997 Connectix
VirtualPC 1999 VMWare Workstation 199x-2002 Xen 2001 IBM AIX LPAR 2006 Amazon EC2 2007 Sun Logical Domains 2007 Linux KVM 2007 InnoTek VirtualBox 2008 MS Hyper-V
Process Virtualization
Process Virtualization 1979-1982 UNIX chroot
Process Virtualization 1979-1982 UNIX chroot 1998 FreeBSD jail
Process Virtualization 1979-1982 UNIX chroot 1998 FreeBSD jail 2001 Parallels
Virtuozzo
Process Virtualization 1979-1982 UNIX chroot 1998 FreeBSD jail 2001 Parallels
Virtuozzo 2001 Linux-VServer
Process Virtualization 1979-1982 UNIX chroot 1998 FreeBSD jail 2001 Parallels
Virtuozzo 2001 Linux-VServer 2005 Solaris Containers
Process Virtualization 1979-1982 UNIX chroot 1998 FreeBSD jail 2001 Parallels
Virtuozzo 2001 Linux-VServer 2005 Solaris Containers 2005 OpenVZ
Process Virtualization 1979-1982 UNIX chroot 1998 FreeBSD jail 2001 Parallels
Virtuozzo 2001 Linux-VServer 2005 Solaris Containers 2005 OpenVZ 2008 Linux LXC
Process Virtualization 1979-1982 UNIX chroot 1998 FreeBSD jail 2001 Parallels
Virtuozzo 2001 Linux-VServer 2005 Solaris Containers 2005 OpenVZ 2008 Linux LXC 2007+ PAAS: Heroku, Joyent, CloudFoundry
Process Virtualization 1979-1982 UNIX chroot 1998 FreeBSD jail 2001 Parallels
Virtuozzo 2001 Linux-VServer 2005 Solaris Containers 2005 OpenVZ 2008 Linux LXC 2007+ PAAS: Heroku, Joyent, CloudFoundry 2013 Docker
What is docker?
It is a lightweight framework (with a powerful API) that
provides a lifecycle for building and deploying applications into containers.
What is the framework?
Framework Components
Framework Components Layers
Framework Components Layers Containers
Framework Components Layers Containers Registry
Layers
Layers Kernel
Layers Kernel cgroups, namespaces, device mapper
Layers Kernel cgroups, namespaces, device mapper bootfs
Layers Kernel cgroups, namespaces, device mapper bootfs Base image: ubuntu
Layers Kernel cgroups, namespaces, device mapper bootfs Base image: ubuntu
Image: Add emacs
Layers Kernel cgroups, namespaces, device mapper bootfs Base image: ubuntu
Image: Add emacs Image: Add Apache
Layers Kernel cgroups, namespaces, device mapper bootfs Base image: ubuntu
Image: Add emacs Image: Add Apache Writable Container
Layers Kernel cgroups, namespaces, device mapper bootfs Base image: ubuntu
Image: Add emacs Image: Add Apache Writable Container Framework: BUILD
Containers
Containers hold the application
Containers hold the application collection of images
Containers hold the application collection of images run, stop, start,
move, delete
Containers hold the application collection of images run, stop, start,
move, delete an isolated process
Containers hold the application collection of images run, stop, start,
move, delete an isolated process Framework: RUN
Registry
Registry Registry stores images
Registry Registry stores images Layers are tar ball files with
metadata
Registry Registry stores images Layers are tar ball files with
metadata Public / Private
Registry Registry stores images Layers are tar ball files with
metadata Public / Private Community warehouse
Registry Registry stores images Layers are tar ball files with
metadata Public / Private Community warehouse Framework: SHARE
Demo: Command Line
Demo: Command Line sudo%docker%ps% sudo%docker%images
Demo: Command Line sudo%docker%pull%busybox% sudo%docker%run%busybox%/bin/echo%hello%world
Demo: Command Line sudo%docker%run%7i%7t%busybox%sh% sudo%docker%ps%7a
Demo: Command Line sudo%docker%diff%066882d91690%
Docker Architecture Client-server application Can run on the same box
or remotely Communicate through sockets Uses a RESTful API Client sends command Daemon executes command
Dockerfile A set of instructions Simliar to a Makefile or
Vagrantfile Declarative
Demo: Dockerfile
Demo: Dockerfile sudo%docker%run%77name%redis%7d%7hunderbird/redis
Demo: Dockerfile %%%%sudo%docker%run%77link%redis:cli%7i%7t%% % %%%%%%%% % % % %
ubuntu:12.10%/bin/bash
Demo: Dockerfile % % apt7get%update% % % apt7get%7y%install%redis7server% % %
service%redis7server%stop
Demo: Dockerfile % % env%|%grep%DB_% % % redis7cli%7h%$DB_PORT_6379_TCP_ADDR
Trusted Builds Trusted Builds have a number of advantages. For
example, users of your Trusted Build can be certain that the resulting image was built exactly how it claims to be.
Demo: Trusted Builds
Trusted Builds Created a GitHub repo Subfolder = name Dockerfile
goes in there
Trusted Builds Use location if using subfolder Repo name by
purpose Tag name by purpose Create repo
Trusted Builds Check the status https://index.docker.io/ builds/ Tag name by
purpose Create repo
Docker & OpenStack www.youtube.com/ watch?v=jEcousZ6xBU
Credits http://slides.com/stevenborrelli/docker http://www.dockerbook.com/ http://www.docker.com/