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
110
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
810
Other Decks in Programming
See All in Programming
Quine, Polyglot, 良いコード
qnighy
4
620
AI時代におけるSRE、 あるいはエンジニアの生存戦略
pyama86
4
990
Boost Performance and Developer Productivity with Jakarta EE 11
ivargrimstad
0
1.5k
GCCのプラグインを作る / I Made a GCC Plugin
shouth
1
160
Identifying User Idenity
moro
6
9.5k
A Journey of Contribution and Collaboration in Open Source
ivargrimstad
0
470
Webの技術スタックで マルチプラットフォームアプリ開発を可能にするElixirDesktopの紹介
thehaigo
2
1k
Amazon Qを使ってIaCを触ろう!
maruto
0
370
Importmapを使ったJavaScriptの 読み込みとブラウザアドオンの影響
swamp09
4
1.3k
Ethereum_.pdf
nekomatu
0
370
2024/11/8 関西Kaggler会 2024 #3 / Kaggle Kernel で Gemma 2 × vLLM を動かす。
kohecchi
4
580
アジャイルを支えるテストアーキテクチャ設計/Test Architecting for Agile
goyoki
9
3.1k
Featured
See All Featured
Bash Introduction
62gerente
608
210k
We Have a Design System, Now What?
morganepeng
50
7.2k
Learning to Love Humans: Emotional Interface Design
aarron
273
40k
Agile that works and the tools we love
rasmusluckow
327
21k
The Invisible Side of Design
smashingmag
297
50k
Thoughts on Productivity
jonyablonski
67
4.3k
Intergalactic Javascript Robots from Outer Space
tanoku
268
27k
Practical Tips for Bootstrapping Information Extraction Pipelines
honnibal
PRO
10
700
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Making Projects Easy
brettharned
115
5.9k
Speed Design
sergeychernyshev
24
600
5 minutes of I Can Smell Your CMS
philhawksworth
202
19k
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/