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
Introduction to Docker
Search
John Downey
February 06, 2014
Programming
3
140
Introduction to Docker
Given at the first Chicago Docker meetup
John Downey
February 06, 2014
Tweet
Share
More Decks by John Downey
See All by John Downey
Cryptography Pitfalls at CactusCon 2019
jtdowney
0
190
Intro to Cybersecurity Workshop
jtdowney
0
140
Cryptography Pitfalls at BsidesMSP 2017
jtdowney
0
190
Cryptography Pitfalls at THOTCON 0x8
jtdowney
0
200
Cryptography Pitfalls at ConFoo Montreal 2017
jtdowney
1
360
Cryptography Pitfalls at BSidesPhilly 2016
jtdowney
0
160
Cryptography Pitfalls at LASCON 2016
jtdowney
0
210
Debugging TLS/SSL at DevOps Days Detroit 2016
jtdowney
1
270
Debugging TLS/SSL at DevOpsDays Boston
jtdowney
1
360
Other Decks in Programming
See All in Programming
AI Agent Tool のためのバックエンドアーキテクチャを考える #encraft
izumin5210
6
1.8k
コマンドとリード間の連携に対する脅威分析フレームワーク
pandayumi
1
450
IFSによる形状設計/デモシーンの魅力 @ 慶應大学SFC
gam0022
1
300
なるべく楽してバックエンドに型をつけたい!(楽とは言ってない)
hibiki_cube
0
140
Rust 製のコードエディタ “Zed” を使ってみた
nearme_tech
PRO
0
160
Vibe Coding - AI 驅動的軟體開發
mickyp100
0
170
組織で育むオブザーバビリティ
ryota_hnk
0
170
The Past, Present, and Future of Enterprise Java
ivargrimstad
0
540
ThorVG Viewer In VS Code
nors
0
770
AI によるインシデント初動調査の自動化を行う AI インシデントコマンダーを作った話
azukiazusa1
1
710
インターン生でもAuth0で認証基盤刷新が出来るのか
taku271
0
190
Architectural Extensions
denyspoltorak
0
280
Featured
See All Featured
CSS Pre-Processors: Stylus, Less & Sass
bermonpainter
359
30k
Kristin Tynski - Automating Marketing Tasks With AI
techseoconnect
PRO
0
140
Hiding What from Whom? A Critical Review of the History of Programming languages for Music
tomoyanonymous
2
410
KATA
mclloyd
PRO
34
15k
技術選定の審美眼(2025年版) / Understanding the Spiral of Technologies 2025 edition
twada
PRO
117
110k
Leo the Paperboy
mayatellez
4
1.4k
Understanding Cognitive Biases in Performance Measurement
bluesmoon
32
2.8k
[Rails World 2023 - Day 1 Closing Keynote] - The Magic of Rails
eileencodes
38
2.7k
Agile that works and the tools we love
rasmusluckow
331
21k
The Director’s Chair: Orchestrating AI for Truly Effective Learning
tmiket
1
96
How to build a perfect <img>
jonoalderson
1
4.9k
I Don’t Have Time: Getting Over the Fear to Launch Your Podcast
jcasabona
34
2.6k
Transcript
John Downey | @jtdowney
None
None
Laptop CI QA Staging Prod Rails code ? ? ?
? ? PostgreSQL ? ? ? ? ? RabbitMQ ? ? ? ? ? libxyz ? ? ? ? ?
http://www.flickr.com/photos/neonman/1438473495/
LXC Linux Containers
LXC: LINUX CONTAINERS • Linux host (kernel >= 2.6.29) •
Linux container (guest) • Must match host architecture • No need to match kernel/distro
DOCKER • Builds on LXC • Server (host) mode requires
Linux and LXC • Recommend kernel >= 3.8 • Client mode runs almost anywhere (Linux/OS X)
WHAT DOCKER ADDS • Images • Layers • Tags •
Repository • Create and share images
DOCKER COMMAND • Written in Go • Open source •
Manages containers and images • Provides HTTP API • Built in CLI client uses API
ADVANTAGES OVER A VM • Package a run-time environment •
Runnable on any linux host • Keeps things isolated and ephemeral • Fast and simple
IMAGES
IMAGES VS CONTAINERS • Images are a template • File
system • Metadata (ports to expose, command to run) • Containers are what is running
IMAGE LAYERS • Images are built up from layers •
Each layer is read-only filesystem • Top layer is a new read-write layer
None
IMAGE HIERARCHY • Form a directed tree • Each image
can specify a parent image • Starts with the parents layers below its own
Ubuntu App A B C DB A B
WAYS TO MAKE IMAGES • Commit a running container (docker
commit) • Dockerfile (docker build) • Import a tarball (docker import)
DOCKERFILE • FROM - What my parent image is •
RUN - Perform a command to prepare the image • ADD - Add a file to the image • EXPOSE - Allow access to a specified port • ENV - Set an environment variable • CMD - Default command to run on container creation
FROM wheezy-base ! ENV DEBIAN_FRONTEND noninteractive ! RUN apt-get install
-y ruby1.9.1 ruby1.9.1-dev RUN apt-get install -y build-essential RUN apt-get install -y libpq-dev RUN apt-get install -y libxml2-dev libxslt-dev RUN apt-get install -y libcurl4-openssl-dev RUN gem install bundler ! EXPOSE 3000 ! WORKDIR /gateway ADD . /gateway/ RUN bundle install ! CMD ["bundle", "exec", "rails", "server", "thin"]
REPOSITORY / INDEX
None