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
Schnelldurchlauf Docker
Search
berndfischer63
November 06, 2014
Programming
0
45
Schnelldurchlauf Docker
DevOps - Continuous Delivery mit Jenkins und Docker
JUG Saxony, 06. November 2014
berndfischer63
November 06, 2014
Tweet
Share
More Decks by berndfischer63
See All by berndfischer63
Docker in Software Development - Current State
berndfischer63
1
160
Docker in der Java-Entwicklung
berndfischer63
0
65
Demystifying Docker
berndfischer63
0
570
Softwareentwicklung für das Internet der Dinge
berndfischer63
0
41
Other Decks in Programming
See All in Programming
AI POSにおけるLLM Observability基盤の導入 ― サイバーエージェントDXインターン成果報告
hekuchan
0
690
Phronetic Team with AI - Agile Japan 2025 closing
hiranabe
2
620
PyCon mini 東海 2025「個人ではじめるマルチAIエージェント入門 〜LangChain × LangGraphでアイデアを形にするステップ〜」
komofr
3
1k
PHPライセンス変更の議論を通じて学ぶOSSライセンスの基礎
matsuo_atsushi
0
160
Module Harmony
petamoriken
2
450
AIと協働し、イベントソーシングとアクターモデルで作る後悔しないアーキテクチャ Regret-Free Architecture with AI, Event Sourcing, and Actors
tomohisa
2
2.4k
「10分以内に機能を消せる状態」 の実現のためにやっていること
togishima
1
510
オフライン対応!Flutterアプリに全文検索エンジンを実装する @FlutterKaigi2025
itsmedreamwalker
2
220
Herb to ReActionView: A New Foundation for the View Layer @ San Francisco Ruby Conference 2025
marcoroth
0
110
Vueで学ぶデータ構造入門 リンクリストとキューでリアクティビティを捉える / Vue Data Structures: Linked Lists and Queues for Reactivity
konkarin
1
310
Querying Design System デザインシステムの意思決定を支える構造検索
ikumatadokoro
1
1.2k
CSC509 Lecture 11
javiergs
PRO
0
310
Featured
See All Featured
Documentation Writing (for coders)
carmenintech
76
5.1k
Scaling GitHub
holman
463
140k
Keith and Marios Guide to Fast Websites
keithpitt
413
23k
The Illustrated Children's Guide to Kubernetes
chrisshort
51
51k
What’s in a name? Adding method to the madness
productmarketing
PRO
24
3.8k
Build your cross-platform service in a week with App Engine
jlugia
234
18k
Side Projects
sachag
455
43k
How STYLIGHT went responsive
nonsquared
100
5.9k
Building Adaptive Systems
keathley
44
2.8k
Become a Pro
speakerdeck
PRO
29
5.6k
Visualization
eitanlees
150
16k
The Straight Up "How To Draw Better" Workshop
denniskardys
239
140k
Transcript
None
06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 2'
Container'vs'VM' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 3' Virtual'Machine' App'A' RunIme' Guest'OS' App'B' RunIme'
Hypervisor'/'Host'OS' Physical'Server' Docker' Docker' App'A' RunIme' App'A' RunIme' Docker'Engine' Host'OS' Physical'Server'
Docker'Components' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 4' Union'/'Layer'FS' CGroups' Namespaces' Libcontainer'(LXC,'…)' Docker' Linux'Kernel'
Windows' Docker'Architecture' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 5' Docker'Client' Docker'Client' Mac'OS'X' Docker'Client' Docker'Host'(Linux)'
Docker'Client' Docker'Daemon' RESTful'API' Socket' Docker'Container' Docker'Container' Docker'Container' Docker'Container'
Docker'Images'&'Container' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 6' boobs' kernel' cgroups,'namespaces,'device'mapper' base'image' ubuntu' image'
image' writable'container' add'java' add'tomcat' Image'(ro)' Container'
docker'info' • InformaIonen'about'Docker'and'environment' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 7'
docker'info' • InformaIonen'about'Docker'and'environment' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 8'
docker'ps'()a)' • list'container'and'status' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 9'
docker'run' • run'a'process'(inside'container:'in'foreground)' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 10'
docker'run')it' • run'command'in'a'container'interacIve' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 11'
docker'run')d' • run'command'in'a'container'daemonized' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 12'
docker'start/stop' • start/stop'a'container' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 13'
docker'exec' • execute'command'in'running'container' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 14'
docker'images'()a)' • list'images'(local'registry/repository)' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 15'
Dockerfile' • describes'how'to'build'a'Docker'image' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 16'
docker'build' • build'a'Docker'image' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 17'
Docker'grafisch')'DockerUI' • analog'CLI'nur'grafisch';))' • hkps://github.com/crosbymichael/dockerui' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 18'
UND$DAMIT$ZURÜCK$ZU$NICO$…$ 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 19'
Schnelldurchlauf'Docker' Fortsetzung'
Development'with'Docker' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 21' Acceptance'Tests' Performance'Tests' ExploraIve'Tests' ProdukIon' build' Docker'Repository'
Development'with'Docker' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 22' docker build –tag=image_under_test .! docker run
–name=c01 –d –P image_under_test! ! # do something more or less useful ! # aka testing! ! docker stop c01! docker rm c01!
Dockerhub' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 23'
Private'Registry' • docker'run'–d'–p'5000:5000'//name=repo' registry' • docker'run'/d'/p'9080:8080'//name=repo/ui' atcol/docker/registry/ui' ' • http://192.168.59.103:5000''
• http://192.168.59.103:5000/v1/search' • http://192.168.59.103:9080/repository/index'' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 24'
Private'Registry' • docker'tag'befi/sshd' 192.168.59.103:5000/befi/sshd' • docker'push'''''''''''''' 192.168.59.103:befi/sshd' ' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony'
25'
Container'ConfiguraIon' • docker'run'–d'' /e'MYSQL_ROOT_PASSWORD=secret' /e'MYSQL_USER=username' /e'MYSQL_PASSWORD=usersecret' /e'MYSQL_DATABASE=db_name' mysql' ' 06.11.2014'
T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 26'
Docker'and'Persistent'Data' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 27' • sharing'files'and'folder'with'host' • data'container'
Docker'and'Persistent'Data' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 28' • sharing'files'and'folder'with'host' ' )v'$(pwd)/html:/usr/share/nginx/html'
Docker'and'Persistent'Data' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 29' • data'container' ' ))volumes)from=nginx''
Linking'Containers' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 30' ))link=<source_container>:<alias>' ))link=mysql:mysql'' mysql::mysql' ' Environment)Variables:' '
MYSQL_USER' MYSQL_PASSWORD' MYSQL_DATABASE' befi/jugdemo::jugdemo' ' Environment)Variables:' ' MYSQL_ENV_MYSQL_USER' MYSQL_ENV_MYSQL_PASSWORD' MYSQL_ENV_MYSQL_DATABASE' LINK'
Linking'Container' • Beispielprojekt:'Java')>'MySql)DB' • MySql' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 31' docker'run'//name=mysql' '/e'MYSQL_ROOT_PASSWORD=9876'
'/e'MYSQL_USER=test' '/e'MYSQL_PASSWORD=1234' '/e'MYSQL_DATABASE=jugdemo' '/d'/P'mysql'
Linking'Container' • Beispielprojekt:'Java')>'MySql)Database' • Spring'Boot' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 32'
UND$DAMIT$ZURÜCK$ZU$NICO$…$ 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 33'
Schnelldurchlauf'Docker' Arbeitsumgebungen'für'Developer'
Boot2Docker' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 35' Virtual'Machine' Linux'with'Docker'Daemon' Docker' Container' Docker' Container'
Vagrant'&'Docker' • on'non)Linux)Systems'based'on'Boot2Docker' • provider' – build'images'and'run'container' • provisioning' – build'images'and'run'container' – install'Boot2Docker'…'
• Einbindung'in'den'“Arbeitszyklus”'nicht'sehr' effekIv'(vagrant'reload/provision)' ' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 36'
Vagrant'&'Docker' • Beispiel:'jugdemo' • Auszug'“vagranbile”' ' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 37'
Packer'&'Docker' • build'and'handle'images'without'Dockerfiles' ' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 38' {! “type”: “docker”,!
“image”: “ubuntu”,! “export_path”: “image.tar”! }{! “postprocessors”: [[! {! “type”: “docker-tag”, ! “repository”: “befi/packer”, “tag”: “0.1”! }! “docker-push”! ]]! }!
Fig' • OrchestraIon'(helper)'for'Docker' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 39' Bsp.:'Java')>'MySql)Database'
Summary'for'Developer' • fast'and'simple' • bash'scripIng'should'be'your'friend'…'!' • “plain”'Docker'for'simple'use'cases'only' • separaIon'of'code'and'data/status' – Immutable'Infrastructure/Phoenix'Server'
• separaIon'of'funcIonality' – ApplicaIon,'Logging,'Backup,'…' • microservices'…' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 40'
Schnelldurchlauf'Docker' Plawormen'
CoreOS' • minimal'OperaIng'System'(should'be'able'to'run' Docker'+'Container)' • painless'UpdaIng' • designed'for'Docker'Container' • clustered'by'default'
– etcd,'systemd,'fleet' • distributed'system'tools' – distributed'locking,'master'elecIon' • service'discovery' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 42'
and'more'…' • OpenStack'(i.e.'Ubuntu'Hypervisor)' • CloudFoundry' • Kubernetes' • …' •
Partnerschayen'mit' – Microsoy,'' – Google'(Ankündigung'auf'Cloud)Konferenz),'' – …' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 43'
VIELEN$DANK$FÜR$IHRE$ AUFMERKSAMKEIT!$ Fragen?' 06.11.2014' T)Systems'MMS'+'MindApproach'für'JUG'Saxony' 44'