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; The Shipping - Andreas Tiefenthaler
Search
Kod.io Linz
March 01, 2014
Programming
160
1
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
Docker; The Shipping - Andreas Tiefenthaler
Kod.io Linz
March 01, 2014
More Decks by Kod.io Linz
See All by Kod.io Linz
Kod.io Linz closing notes - Floor Drees
kodio_linz
0
200
Make yours and other people's life easier! Do support! - Mike Adolphs
kodio_linz
0
140
Objective-C for Rubyists - Mikael Konutgan
kodio_linz
0
180
How to become a better developer - Markus Prinz
kodio_linz
1
130
10 things I didn’t know about HTML, CSS, and JavaScript - Mathias Bynens
kodio_linz
5
360
The Ultimate Python Database Toolkit: SQLAlchemy - Muhammet Sena Aydın
kodio_linz
1
320
How to Get More Women in Tech in 5 Steps - Anika Lindtner
kodio_linz
0
710
RubyMotion’s Secret Sauce - Joshua Ballenco
kodio_linz
0
310
Fly, you tools - Piotr Szotkowski
kodio_linz
1
290
Other Decks in Programming
See All in Programming
1B+ /day規模のログを管理する技術
broadleaf
0
120
気圧・高度・GPSを記録&可視化するアプリ「Koudo」を作った話
hjmkth
1
330
これからAgentCoreを触る方へトレンドはGatewayです
har1101
5
400
ECSアプリログをFireLensでコスト削減しようとしたけど諦めた話 in Fargate×Node.js
akihisaikeda
2
4.2k
Skillsは効率化、Agentsは"自分の拡張"——Builder時代のエージェント編成(CC Night 2026)
wemra
1
170
ふつうのFeature Flag実践入門
irof
8
4.2k
act1-costs.pdf
sumedhbala
0
130
Observability in Practice:Grafana 與 Edge Device SRE 的那些事
blueswen
0
180
Inside Stream API
skrb
1
800
フロントエンドとバックエンドで「1文字」を揃えよう
youkidearitai
PRO
0
760
軽量Java基盤の設計 DIコンテナに頼らない、長期保守と1秒起動の実現 JJUG CCC 2026 Spring
macha64
0
610
正しくソフトウェアを作る、前提を疑うための認知の視点 / doubt-premise
minodriven
21
7.1k
Featured
See All Featured
Collaborative Software Design: How to facilitate domain modelling decisions
baasie
1
250
Bioeconomy Workshop: Dr. Julius Ecuru, Opportunities for a Bioeconomy in West Africa
akademiya2063
PRO
1
160
Being A Developer After 40
akosma
91
590k
Between Models and Reality
mayunak
4
360
What does AI have to do with Human Rights?
axbom
PRO
1
2.2k
Applied NLP in the Age of Generative AI
inesmontani
PRO
4
2.3k
10 Git Anti Patterns You Should be Aware of
lemiorhan
PRO
659
62k
Heart Work Chapter 1 - Part 1
lfama
PRO
8
36k
Documentation Writing (for coders)
carmenintech
77
5.4k
Navigating Weather and Climate Data
rabernat
0
250
ReactJS: Keep Simple. Everything can be a component!
pedronauck
666
130k
Writing Fast Ruby
sferik
630
63k
Transcript
intentionally left about: blank
Andreas Tiefenthaler Twitter/GitHub: @pxlpnk contentful.com
the shipping
What is this about? • Docker in theory • technology
• tiny live demo • that to use it for • that to not use it for • some code • bigger live demo
Docker is an open-source engine that automates the deployment of
any application as a lightweight, portable, self-sufficient container that will run virtually anywhere. written in go-lang
Main Features
Can encapsulate any payload and its dependencies
Lightweight, virtually no performance or start-up penalty, quick to move
and manipulate
Separation of duties code vs infrastructure
Resource, network, and content isolation. Avoids dependency hell
Containers vs VMs
Container? • Uses Linux Containers - LXC • cgroups •
Linux Kernel itself
Basic Functions • build • modify • publish • search
• run containers
First demo: docker run ubuntu /bin/echo hello world!
Use cases
Automating the packaging and deployment of applications Creation of lightweight,
private PAAS environments Automated testing and continuous integration/deployment Deploying and scaling web apps, databases and backend services
Who uses docker?
https://flynn.io/
Some Code
Dockerfiles
FROM ubuntu:12.10! RUN apt-get -y install htop! ENTRYPOINT ["/bin/bash"]! !
$docker build -t container .
The APP Demo
The APP • Sinatra Webservice Container • Sidekiq Worker Container
• Redis Container
Webapp require_relative 'config.rb'! require_relative 'worker'! ! require 'sinatra'! ! set
:environment, :production unless ENV['development']! ! get '/:task/:cost' do |task, cost|! Worker.perform_async(task, cost)! end!
Worker require_relative 'config.rb'! require 'sidekiq'! ! class Worker! include Sidekiq::Worker!
! def perform(task = 'HardTask', cost = 2)! puts "Working on #{task} for: #{cost}"! sleep cost.to_i! end! end!
Config DB_URL = ENV['DB_PORT_6379_TCP_ADDR']! DB_PORT = 6379! DB_NO = 0!
DB_NAMESPACE='catcher'! ! Sidekiq.configure_client do |config|! config.redis = { namespace: DB_NAMESPACE, size: 1,! url: "redis://#{DB_URL}:#{DB_PORT}/#{DB_NO}" }! end! ! Sidekiq.configure_server do |config|! config.redis = { namespace: DB_NAMESPACE, ! url: "redis://#{DB_URL}:#{DB_PORT}/#{DB_NO}" }! end!
DEMO
Cons • Not production ready • Rapidly changing • Should
not run Database within it • Does not give you Security Superpowers (http://blog.docker.io/2013/08/containers-docker-how-secure-are-they/)
v.0.8 • BTRFS support • OS X support • one
release per month • new builder features (Dockerfiles) • general faster faster
None
None
@langziehohr
Danke, thank you, dankjewel Questions? Source: https://github.com/pxlpnk/docker Docker: https://www.docker.io/ Diagrams
taken from docker.io Slides: http://an-ti.eu/talks.html kod-io-2014 10% off contentful.com