docker with cloud service

73
Docker with Cloud Service Caesar Chi @clonncd April 25 2015

Upload: caesar-chi

Post on 17-Jul-2015

980 views

Category:

Technology


2 download

TRANSCRIPT

Docker with Cloud Service

Caesar Chi @clonncd

April 25 2015

Communication is most important in development.

開發中資訊通透是最重要的關鍵

溝通

版本控制其中⺫⽬目的,讓團隊程式碼具有可追蹤,可掌控度

Rails ActiveRecord

資料庫也可以具有版本控管,可追蹤性

https://www.pixelapse.com/

圖⽚片版本控管⼯工具

為何使⽤用版本控制

• 明確了解版本之間疊代過程

• 知道開發過程的始末

• 明確了解團隊開發⽚片段經驗

• 掌控團隊進度

• 確保資訊通透度,維持溝通順暢

How about OS/ ENV

環境佈署,與開發通常是不同⼈人負責

通常希望的開發循環會是如此

開發對開發

• 規格實例化 • 規格的釐清 • 確認需求 • 前後端整合 • 第三⽅方 API 串接

開發對資料庫

• ORM Model • schema 版本控制 • 資料庫效能調教 • 資料庫正規化 • 報表製作

開發對視覺• 知道微變動之處 • 明確了解設計變動之處 • 掌握開發動線流程 • 促進雙⽅方溝通協議 • 儘快動⼯工,完成可操作第⼀一版本

開發對環境

• 開發系統環境規格 • 系統佈署⽅方式 • 正式環境與開發環境建置 • 正式環境與開發環境差異 • 異常釐清

productiondevelopme

OSX

UBUNTU

Same environment

Windows

find more services : https://registry.hub.docker.com/

Dockerlize

社群環境,擁有許多不同 OS 環境

開發環境變動更為⽅方便,服務調整更為簡潔

Dockerfile

ubuntu 14.04

ruby and nodejs

sails framework

ubuntu 14.04

ruby and nodejs

loopback

ubuntu 14.04

ruby and nodejs

Ruby on Rails

基於相同環境基礎,打造不同開發環境

ubuntu 14.04

ruby and nodejs

sails framework

ubuntu 14.04

ruby and nodejs

loopback

ubuntu 14.04

ruby and nodejs

Ruby on Rails

基於相同環境基礎,打造不同開發環境

extendable

ubuntu 14.04

ruby and nodejs

sails frameworkFROM smlsunxie/rudy-node:latest

ubuntu 14.04

ruby and nodejs

sails frameworkFROM smlsunxie/rudy-node:latest

RUN gem install compass RUN gem install bootstrap-sass

RUN npm install -g grunt-cli RUN npm install -g bower RUN npm install -g coffee-script RUN npm install -g sails

環境具有可讀性,通透度 打開環境設定,⿊黑盒⼦子的祕密

Dockerfile

https://github.com/enokd/docker-node-hello/blob/master/Dockerfile

$docker build .$docker run -p 49160:8080 -d gasi/centos-node-hello

$docker build .$docker run -p 49160:8080 -d gasi/centos-node-hello

centOS

nodejs

Docker Simple Waydocker-compose / fig

• $docker pull mysql:latest

• $docker run \ -p 3306:3306 \ -v /data/mysql:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=root \ mysql

fig.yml / compose.yml

VS

• $docker pull mysql:latest

• $docker run \ -p 3306:3306 \-v /data/mysql:/var/lib/mysql \-e MYSQL_ROOT_PASSWORD=root \mysql

• 查詢所有環境變數:fig run SERVICE_NAME env

• 環境變數清楚可⾒見

Mysql

Redis

2.8

5.7

環境與程式共存

https://github.com/enokd/docker-node-hello/

機制

環境透過不斷堆疊,重複使⽤用,讓環境進⼊入版本控制

Docker 架構

ubuntu 14.04

ruby and nodejs

sails framework

ubuntu 14.04

ruby and nodejs

loopback

Windows azure VM -> create coreOS

ubuntu 14.04

ruby and nodejs

sails framework

ubuntu 14.04

ruby and nodejs

loopback

Windows azure VM -> create coreOS

10082:80 10083:80

ubuntu 14.04

ruby and nodejs

sails framework

ubuntu 14.04

ruby and nodejs

loopback

Windows azure VM -> create coreOS

10082:80 10083:80

ubuntu 14.04

Haproxy

ubuntu 14.04

ruby and nodejs

loopback

80:80

10081:80

ubuntu 14.04

ruby and nodejs

loopback

10082:80

ubuntu 14.04

ruby and nodejs

loopback

10083:80

ubuntu 14.04

Haproxyubuntu 14.04

ruby and nodejs

loopback

ubuntu 14.04

ruby and nodejs

loopback

混搭不同雲端服務,打造完整⽣生態

傻⽠瓜版本https://www.tutum.co/

https://www.tutum.co/

https://www.tutum.co/

ubuntu 14.04

Haproxyubuntu 14.04

ruby and nodejs

loopback

ubuntu 14.04

ruby and nodejs

loopback

https://support.tutum.co/support/solutions/articles/5000050235-load-balancing-a-web-service

ubuntu 14.04

ruby and nodejs

loopback

ubuntu 14.04

ruby and nodejs

loopback

ubuntu 14.04

ruby and nodejs

loopback

https://github.com/kelonye/node-tutum-deploy

統⼀一管理 Web GUI 監控程式執⾏行狀況

後記

Docker 讓 OS / 開發環境變得更容易掌控,清晰

Dockerfile 讓 Dev & Ops 交流更為清晰

Cloud service ⽀支援 docker ,讓佈署變得簡單

節省時間達到最⾼高的效益

確保⼈人員間順暢溝通

Communication is most important in development.

開發中資訊通透是最重要的關鍵

Ref

• http://www.slideshare.net/smlsun/docker-42790855

• http://www.slideshare.net/kojilin/docker-intro-35870496

• https://www.gitbook.com/book/philipzheng/docker_practice/details

• http://www.meetup.com/Docker-Taipei/

Study4.TW-Global Azure BootCamp 台中場