31
Hello 2015/01/27 Frank

Hello docker

Embed Size (px)

Citation preview

Page 1: Hello docker

Hello

2015/01/27 Frank

Page 2: Hello docker

先說結論

Page 3: Hello docker

部門中使用Docker佈署RedmineWikiJenkins Master各種環境的 Jenkins Slave

Page 4: Hello docker

Docker

container and lightweight

virtualization

Page 5: Hello docker

What is docker?GolangBase on Linux LXC...Lightweight Virtualization

Page 6: Hello docker
Page 7: Hello docker

Docker 三劍客ImageContainerRepository

Page 8: Hello docker

Why Docker?更快速的交付和部署更有效率的虛擬化更輕鬆的遷移和擴展更簡單的管理

Page 9: Hello docker

How?NamespacesControl groupsUnion file systemsContainer format

Page 10: Hello docker

Docker Commandsdocker pull ........ 從倉庫下載imagedocker push ........ 上傳imagedocker commit ........ 將container的變更疊上imagedocker run ...... 創建並運行containerdocker ps ..... 查看containerdocker images ..... 查看imagedocker rm ...... 刪除containerdocker build .... 由Dockerfile 建立image.........

Page 11: Hello docker

DIY

Page 12: Hello docker

Use VirtualboxDownload : https://db.tt/rQMd1z6WImport ovf to virtualboxusername: rootpassword: 12345678

Page 13: Hello docker

小試身手-ubuntu sshd㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫙�㫔�㫘�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫘�㫙�㫙�㫙�㫙�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫙�㫙�㫙�㫘�㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫔�㫕�㫙�㫙�㫔�㫘�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫘�㫙�㫙�㫙�㫙�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫙�㫙�㫙�㫘�㫔�㫕�㫘�㫙�㫙�㫕�㫘�㫘�㫙�㫙�㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫔�㫕�㫙�㫔�㫕�㫕�㫕�㫕�㫖�㫕�㫕�㫔�㫘�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫘�㫙�㫙�㫙�㫙�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫙�㫙�㫙�㫘�

Page 14: Hello docker

MoinMoin Wiki㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫙�㫔�㫘�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫙�㫙�㫙�㫙�㫙�㫙�㫙�㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫔�㫕�㫙�㫙�㫔�㫕�㫘�㫔�㫔�㫕�㫙�㫔�㫖�㫕�㫖�㫕�㫖�㫖�㫕�㫔�㫔�㫕�㫕�㫙�㫘�㫙�㫘�㫖�㫙�㫚�㫘�㫙�㫙�㫙�㫙�㫔�㫘�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫙�㫙�㫙�㫙�㫙�㫙�㫙�

http://127.0.0.1:8080

Page 15: Hello docker

Redmine

㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫔�㫕�㫕�㫙�㫘�㫙�㫘�㫖�㫙�㫘�㫘�㫙�㫙�㫙�㫘�㫔�㫕�㫙�㫙�㫔�㫕�㫙�㫔�㫖�㫕�㫖�㫕�㫖�㫖�㫕�㫔�㫙�㫘�㫙�㫘�㫘�㫙�㫙�㫘�㫙�㫕�㫙�㫘�㫘�㫙�㫙�㫙�㫘�㫖�㫙�㫘�㫙�㫘�㫙�㫙�

Page 16: Hello docker

Redmine + PostgreSQL

㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫔�㫕�㫕�㫙�㫘�㫙�㫘�㫖�㫙�㫙�㫙�㫙�㫙�㫙�㫘�㫙�㫙�㫙�㫔�㫕�㫘�㫔�㫘�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫕�㫘�㫔�㫕�㫖�㫖�㫘�㫗�㫖�㫗�㫖�㫖�㫙�㫘�㫘�㫙�㫙�㫙�㫘�㫘�㫙�㫙�㫙�㫘�㫙�㫘�㫙�㫙�㫙�㫙�㫕�㫔�㫕�㫘�㫔�㫕�㫖�㫖�㫘�㫗�㫗�㫖�㫗�㫖�㫙�㫘�㫘�㫙�㫙�㫙�㫘�㫕�㫔�㫕�㫘�㫔�㫕�㫖�㫖�㫘�㫗�㫖�㫗�㫗�㫖�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫘�㫕�㫔�㫘�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫙�㫘�㫙�㫘�㫘�㫙�㫙�㫘�㫙�㫕�㫙�㫙�㫙�㫙�㫙�㫙�㫘�㫙�㫙�㫙�㫖�㫙�㫘�㫙�㫘�㫙�㫙�

Start PostgreSQL Container

Start Redmine Container㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫔�㫕�㫕�㫙�㫘�㫙�㫘�㫖�㫙�㫘�㫘�㫙�㫙�㫙�㫘�㫔�㫕�㫙�㫙�㫔�㫕�㫕�㫙�㫙�㫔�㫕�㫕�㫙�㫙�㫙�㫙�㫔�㫙�㫙�㫙�㫙�㫙�㫙�㫘�㫙�㫙�㫙�㫖�㫙�㫙�㫙�㫙�㫙�㫙�㫘�㫙�㫙�㫙�㫔�㫘�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫕�㫙�㫔�㫖�㫕�㫖�㫕�㫖�㫖�㫕�㫔�㫘�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫙�㫘�㫙�㫘�㫘�㫙�㫙�㫘�㫙�㫕�㫙�㫘�㫘�㫙�㫙�㫙�㫘�㫖�㫙�㫘�㫙�㫘�㫙�㫙�

Page 17: Hello docker

Redmine + host volume㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫔�㫕�㫕�㫙�㫘�㫙�㫘�㫖�㫙�㫙�㫙�㫙�㫙�㫙�㫘�㫙�㫙�㫙�㫔�㫕�㫘�㫔�㫘�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫕�㫘�㫔�㫕�㫖�㫖�㫘�㫗�㫖�㫗�㫖�㫖�㫙�㫘�㫘�㫙�㫙�㫙�㫘�㫘�㫙�㫙�㫙�㫘�㫙�㫘�㫙�㫙�㫙�㫙�㫕�㫔�㫕�㫘�㫔�㫕�㫖�㫖�㫘�㫗�㫗�㫖�㫗�㫖�㫙�㫘�㫘�㫙�㫙�㫙�㫘�㫕�㫔�㫕�㫘�㫔�㫕�㫖�㫖�㫘�㫗�㫖�㫗�㫗�㫖�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫘�㫕�㫔�㫘�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫕�㫙�㫔�㫕�㫙�㫙�㫙�㫙�㫕�㫙�㫘�㫘�㫙�㫙�㫙�㫘�㫕�㫘�㫘�㫖�㫕�㫙�㫘�㫙�㫕�㫙�㫙�㫘�㫕�㫙�㫙�㫙�㫙�㫙�㫙�㫘�㫙�㫙�㫙�㫔�㫘�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫙�㫘�㫙�㫘�㫘�㫙�㫙�㫘�㫙�㫕�㫙�㫙�㫙�㫙�㫙�㫙�㫘�㫙�㫙�㫙�㫖�㫙�㫘�㫙�㫘�㫙�㫙�

㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫔�㫕�㫕�㫙�㫘�㫙�㫘�㫖�㫙�㫘�㫘�㫙�㫙�㫙�㫘�㫔�㫕�㫙�㫙�㫔�㫕�㫕�㫙�㫙�㫔�㫕�㫕�㫙�㫙�㫙�㫙�㫔�㫙�㫙�㫙�㫙�㫙�㫙�㫘�㫙�㫙�㫙�㫖�㫙�㫙�㫙�㫙�㫙�㫙�㫘�㫙�㫙�㫙�㫔�㫘�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫕�㫙�㫔�㫖�㫕�㫖�㫕�㫖�㫖�㫕�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫕�㫙�㫔�㫕�㫙�㫙�㫙�㫕�㫙�㫘�㫘�㫙�㫙�㫙�㫘�㫕�㫘�㫘�㫙�㫘�㫖�㫕�㫙�㫙�㫙�㫘�㫕�㫙�㫘�㫘�㫙�㫙�㫙�㫘�㫕�㫘�㫘�㫙�㫘�㫔�㫘�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫙�㫘�㫙�㫘�㫘�㫙�㫙�㫘�㫙�㫕�㫙�㫘�㫘�㫙�㫙�㫙�㫘�㫖�㫙�㫘�㫙�㫘�㫙�㫙�

Page 18: Hello docker

Jenkins㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫔�㫕�㫙�㫙�㫔�㫕�㫙�㫔�㫖�㫕�㫖�㫕�㫖�㫖�㫕�㫖�㫕�㫔�㫘�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫘�㫙�㫙�㫙�㫙�㫙�

㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫔�㫕�㫙�㫙�㫔�㫕�㫘�㫔�㫔�㫕�㫙�㫔�㫖�㫕�㫖�㫕�㫖�㫖�㫕�㫖�㫕�㫔�㫘�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫕�㫙�㫔�㫕�㫙�㫙�㫙�㫕�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫕�㫘�㫘�㫙�㫘�㫖�㫕�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫔�㫘�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫕�㫕�㫙�㫘�㫙�㫘�㫖�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫔�㫘�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫘�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫘�㫙�㫙�㫙�㫙�㫙�

Page 19: Hello docker

Jenkins Slave 參上

Page 20: Hello docker

How ?Master 新增Slave利用Docker 起動 Slave並將設定好的Slave ID傳入使用 JNLP 連線

Page 21: Hello docker

Start Jenkins Master㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫔�㫕�㫙�㫙�㫔�㫕�㫘�㫔�㫔�㫕�㫙�㫔�㫖�㫕�㫖�㫕�㫖�㫖�㫕�㫖�㫕�㫔�㫕�㫙�㫔�㫕�㫕�㫖�㫕�㫕�㫖�㫕�㫕�㫖�㫕�㫕�㫔�㫔�㫘�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫕�㫙�㫔�㫕�㫙�㫙�㫙�㫕�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫕�㫘�㫘�㫙�㫘�㫖�㫕�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫔�㫘�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫕�㫕�㫙�㫘�㫙�㫘�㫖�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫔�㫘�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫔�㫘�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫘�㫙�㫙�㫙�㫙�㫙�

加入 52842 port 給 JNLP 使用

Page 22: Hello docker

設定 Master JNLP Port

Manage Jenkins->Configure Global Security->Enable security->TCP port for JNLP slave agents

Change to Fixed:52842

Page 23: Hello docker
Page 24: Hello docker

Add SlaveManage Jenkins->Manage Nodes->

New Node->Dumb Slave->

Page 25: Hello docker

Remote root directory: /home/jenkinsLaunch method : launch slave agent via java web startTunnel connection through: :52842

Page 26: Hello docker
Page 27: Hello docker

新增五個小試身手

Page 28: Hello docker

Run slave docker image㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫙�㫔�㫘�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫙�㫘�㫙�㫘�㫕�㫙�㫘�㫙�㫘�

㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫔�㫕�㫘�㫔�㫕�㫘�㫔�㫗�㫗�㫖�㫗�㫖�㫘�㫗�㫖�㫖�㫙�㫙�㫘�㫙�㫘�㫕�㫔�㫕�㫘�㫔�㫗�㫖�㫗�㫗�㫖�㫗�㫘�㫖�㫖�㫖�㫗�㫖�㫕�㫕�㫖�㫕�㫕�㫕�㫕�㫕�㫕�㫖�㫖�㫕�㫖�㫕�㫔�㫘�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫙�㫘�㫙�㫘�㫕�㫙�㫘�㫙�㫘�

㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫔�㫕�㫘�㫔�㫕�㫘�㫔�㫗�㫗�㫖�㫗�㫖�㫘�㫗�㫖�㫖�㫙�㫙�㫘�㫙�㫘�㫕�㫔�㫕�㫘�㫔�㫗�㫖�㫗�㫗�㫖�㫗�㫘�㫖�㫖�㫖�㫗�㫖�㫕�㫕�㫖�㫕�㫕�㫕�㫕�㫕�㫕�㫖�㫖�㫕�㫖�㫕�㫔�㫘�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫙�㫘�㫙�㫘�㫕�㫙�㫘�㫙�㫘�

㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫔�㫕�㫘�㫔�㫕�㫘�㫔�㫗�㫗�㫖�㫗�㫖�㫘�㫗�㫖�㫖�㫙�㫙�㫘�㫙�㫘�㫕�㫔�㫕�㫘�㫔�㫗�㫖�㫗�㫗�㫖�㫗�㫘�㫖�㫖�㫖�㫗�㫖�㫕�㫕�㫖�㫕�㫕�㫕�㫕�㫕�㫕�㫖�㫖�㫕�㫖�㫕�㫔�㫘�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫙�㫘�㫙�㫘�㫕�㫙�㫘�㫙�㫘�

㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫔�㫕�㫘�㫔�㫕�㫘�㫔�㫗�㫗�㫖�㫗�㫖�㫘�㫗�㫖�㫖�㫙�㫙�㫘�㫙�㫘�㫕�㫔�㫕�㫘�㫔�㫗�㫖�㫗�㫗�㫖�㫗�㫘�㫖�㫖�㫖�㫗�㫖�㫕�㫕�㫖�㫕�㫕�㫕�㫕�㫕�㫕�㫖�㫖�㫕�㫖�㫕�㫔�㫘�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫙�㫘�㫙�㫘�㫕�㫙�㫘�㫙�㫘�

㫔�㫔�㫘�㫙�㫘�㫙�㫘�㫙�㫔�㫙�㫙�㫙�㫔�㫕�㫘�㫔�㫕�㫘�㫔�㫗�㫗�㫖�㫗�㫖�㫘�㫗�㫖�㫖�㫙�㫙�㫘�㫙�㫘�㫕�㫔�㫕�㫘�㫔�㫗�㫖�㫗�㫗�㫖�㫗�㫘�㫖�㫖�㫖�㫗�㫖�㫕�㫕�㫖�㫕�㫕�㫕�㫕�㫕�㫕�㫖�㫖�㫕�㫖�㫕�㫔�㫘�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫘�㫙�㫙�㫙�㫙�㫙�㫕�㫙�㫙�㫘�㫙�㫘�㫕�㫙�㫘�㫙�㫘�

㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫕�㫕�

Page 29: Hello docker
Page 30: Hello docker

To Be ContinuedWrite Dockerfile & Build ItUse Fig Deploy Docker ContainerDocker Cluster Management

Page 31: Hello docker

Q & A