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.4k
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
GISエンジニアから見たLINKSデータ
nokonoko1203
0
190
生成AI時代を勝ち抜くエンジニア組織マネジメント
coconala_engineer
0
36k
SQL Server 2025 LT
odashinsuke
0
120
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
150
AIエンジニアリングのご紹介 / Introduction to AI Engineering
rkaga
8
3.5k
Graviton と Nitro と私
maroon1st
0
160
Python札幌 LT資料
t3tra
7
1.1k
まだ間に合う!Claude Code元年をふりかえる
nogu66
5
920
Java 25, Nuevas características
czelabueno
0
120
Tinkerbellから学ぶ、Podで DHCPをリッスンする手法
tomokon
0
150
令和最新版Android Studioで化石デバイス向けアプリを作る
arkw
0
470
Spinner 軸ズレ現象を調べたらレンダリング深淵に飲まれた #レバテックMeetup
bengo4com
1
210
Featured
See All Featured
How to build a perfect <img>
jonoalderson
1
4.8k
Automating Front-end Workflow
addyosmani
1371
200k
Java REST API Framework Comparison - PWX 2021
mraible
34
9.1k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
2
3.8k
RailsConf & Balkan Ruby 2019: The Past, Present, and Future of Rails at GitHub
eileencodes
141
34k
Leveraging LLMs for student feedback in introductory data science courses - posit::conf(2025)
minecr
0
97
Design of three-dimensional binary manipulators for pick-and-place task avoiding obstacles (IECON2024)
konakalab
0
330
Navigating Weather and Climate Data
rabernat
0
60
Un-Boring Meetings
codingconduct
0
170
Visual Storytelling: How to be a Superhuman Communicator
reverentgeek
2
400
Building Applications with DynamoDB
mza
96
6.9k
Discover your Explorer Soul
emna__ayadi
2
1k
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/