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
47
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
180
Docker in der Java-Entwicklung
berndfischer63
0
66
Demystifying Docker
berndfischer63
0
570
Softwareentwicklung für das Internet der Dinge
berndfischer63
0
43
Other Decks in Programming
See All in Programming
Developing static sites with Ruby
okuramasafumi
1
340
React 19でつくる「気持ちいいUI」- 楽観的UIのすすめ
himorishige
11
2.6k
Combinatorial Interview Problems with Backtracking Solutions - From Imperative Procedural Programming to Declarative Functional Programming - Part 2
philipschwarz
PRO
0
130
生成AI時代を勝ち抜くエンジニア組織マネジメント
coconala_engineer
0
37k
Cap'n Webについて
yusukebe
0
160
副作用をどこに置くか問題:オブジェクト指向で整理する設計判断ツリー
koxya
1
190
リリース時」テストから「デイリー実行」へ!開発マネージャが取り組んだ、レガシー自動テストのモダン化戦略
goataka
0
160
ローカルLLMを⽤いてコード補完を⾏う VSCode拡張機能を作ってみた
nearme_tech
PRO
0
230
例外処理とどう使い分ける?Result型を使ったエラー設計 #burikaigi
kajitack
4
1.2k
それ、本当に安全? ファイルアップロードで見落としがちなセキュリティリスクと対策
penpeen
2
660
Pythonではじめるオープンデータ分析〜書籍の紹介と書籍で紹介しきれなかった事例の紹介〜
welliving
3
740
Unicodeどうしてる? PHPから見たUnicode対応と他言語での対応についてのお伺い
youkidearitai
PRO
0
120
Featured
See All Featured
A Tale of Four Properties
chriscoyier
162
23k
Darren the Foodie - Storyboard
khoart
PRO
0
2.1k
Lightning Talk: Beautiful Slides for Beginners
inesmontani
PRO
1
410
The #1 spot is gone: here's how to win anyway
tamaranovitovic
1
880
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
41
A Guide to Academic Writing Using Generative AI - A Workshop
ks91
PRO
0
170
How People are Using Generative and Agentic AI to Supercharge Their Products, Projects, Services and Value Streams Today
helenjbeal
1
92
Embracing the Ebb and Flow
colly
88
4.9k
How to Ace a Technical Interview
jacobian
281
24k
Believing is Seeing
oripsolob
0
19
GitHub's CSS Performance
jonrohan
1032
470k
Automating Front-end Workflow
addyosmani
1371
200k
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'