Slide 1

Slide 1 text

Develop With Docker -JOLJOH&SSPS CZRSUU HELP !!!

Slide 2

Slide 2 text

Develop With Docker ᗫ׵ᅺᕚ

Slide 3

Slide 3 text

Develop With Docker ௰ڐίώʡჿ • 搞雲端、寫 Java、寫 Python、ʔซdШɦ੻寫 C • ⾃自⼰己的 CDN ⾃自⼰己建 • ⾃自⼰己的雲端播放器⾃自⼰己做

Slide 4

Slide 4 text

Develop With Docker ʦ˂ࠅᑺʡჿ • ⾃自⼰己的雲端播放器⾃自⼰己建之⼀一⼩小部分 http://bit.ly/1ByJSVZ

Slide 5

Slide 5 text

Develop With Docker ᇜᙇ݊ࡈ߮ʈ Internet of Things Cross Compilation ᆓ ߮

Slide 6

Slide 6 text

Develop With Docker • 同事A:裝不起來啊~~ • 同事B:怎麼弄的!? • 同事C:剛剛還可以的啊!!! • 同事X:幫我弄⼀一下 • 同事Z:Linux … 不熟哩~ ๟௪ක೯ᐑྤ ే ߮

Slide 7

Slide 7 text

Develop With Docker ᒔϞᇜᙇ໔͉ • 年年向⿊黑道宣戰的男⼈人 • 這是 qrtt1 第 N 次向 AutoTools 宣戰 • 別說 AutoTools 了,連 Makefile 都寫得ʔҜٜൖ • 如何避免能⼒力有限形成的 Copy & Paste 世界奇觀: • Makefile.vendor[a-zA-z0-9]+

Slide 8

Slide 8 text

Develop With Docker пɛމҞᆀʘ͉ • [打算] 在 VM 環境好開發環境打包給同事使⽤用 • [vendor A] 要⽤用 fedora 8 裝他們的 toolchain • [vendor B] 要⽤用 ubuntu 裝他們的 toolchain • [vendor N] 要⽤用 xxxxxx 裝他們的 toolchain • ˂૨ٙ到底需要做幾個開發環境!?

Slide 9

Slide 9 text

Develop With Docker ౤ࣩ • 建個 VM 環境,把所有東⻄西都安裝去上,再 export 發給需要開發的同事 • VM 開發環境的缺點 • 檔案較佔空間 • 執⾏行需要的資源較多 • 部分更新較不⽅方便

Slide 10

Slide 10 text

Develop With Docker ΢όࣸᅵٙଡ଼Υ 開發環境 For Vendor [a-zA-z0-9]+ 編譯腳本 for Vendor [a-zA-z0-9]+ X

Slide 11

Slide 11 text

Develop With Docker ਪᕚ࿜ࠅ • 如何免除開發環境建置、維護的負擔 • toolchain 更新 • 相依 library 更新 • 如何維護各種 toolchain 的 Makefile

Slide 12

Slide 12 text

Develop With Docker • 傳統的 Servers 管理 • 使⽤用⼯工⼈人智慧,⼀一⼀一建⽴立需要的 Server • 每次需耗損較多的⼯工⼈人時間,品質依⼯工⼈人⼼心情⽽而定 • 雲端⾵風格的 Servers 管理 • 使⽤用宣告式腳本,描述應該建⽴立的 Server • 使⽤用⼯工具依腳本建⽴立,品質相對穩定 Σථ၌࠾ᗝ

Slide 13

Slide 13 text

Develop With Docker *OGSBTUSVDUVSFBT$PEF • 基礎建設即為程式碼,例如雲端服務 AWS CloudFormation; DevOps ⼯工具: Ansible, Chef, Puppet • 程式碼 • ⽅方便透過版本控制系統管理 • 狀態容易 reproduce • 最終成果可拋式(Disposable)

Slide 14

Slide 14 text

Develop With Docker • Vagrant: https://www.vagrantup.com/ • Provision ⼯工具:依腳本建⽴立出需要的 VM 環境 或 Docker Container • Docker: https://www.docker.com/ • Linux Container 管理⼯工具:依腳本建出需要的 Docker Image ක೯ᐑྤBT$PEF

Slide 15

Slide 15 text

Develop With Docker %PDLFS • Docker 官網 
 https://www.docker.com/
 https://www.docker.com/tryit/ Docker 練習環境 • The Docker Ecosystem: An Introduction to Common Components
 http://bit.ly/1BE2WIc • Docker 101 - Intro to Docker 
 http://slidesha.re/1LxLOpD • 深⼊入浅出Docker(⼀一):Docker核⼼心技术预览
 http://bit.ly/1LxLRBN

Slide 16

Slide 16 text

Develop With Docker %PDLFSWT7. http://bit.ly/1A6ETAd Ⴠ ޮ

Slide 17

Slide 17 text

Develop With Docker • build a image from the Dockerfile • run a container from the image • show the history of a image • commit changes of a container to a new image • stop, start, rm a container; rmi a image %PDLFS$PNNBOE

Slide 18

Slide 18 text

Develop With Docker %PDLFSGJMF • Image 建⽴立腳本 FROM ubuntu:14.04.1 RUN apt-get update -y RUN apt-get install -y cmake RUN apt-get install -y vim RUN apt-get install -y wget tree ADD scripts/bashrc /.bashrc WORKDIR /data

Slide 19

Slide 19 text

Develop With Docker Any Question Before Demonstration 
 Docker Basic Commands

Slide 20

Slide 20 text

Develop With Docker <˖΁>ႡЪක೯ᐑྤ • 設想⼀一下⼀一般的⽂文件會看到什麼... • 啟動 docker for vendor A • 把 vendor A 的 toolchain.tgz 解到 /opt/vendorA/ • 開始編譯 XXX Library ⾄至 /opt/vendorA/XXX • 開始編譯 YYY Library ⾄至 /opt/vendorA/YYY • 把它 tar 起來,上傳⾄至 s3 後續使⽤用 WTF

Slide 21

Slide 21 text

Develop With Docker ක೯ᐑྤ 我只想要⼀一個 
 build-image.sh

Slide 22

Slide 22 text

Develop With Docker Any Question Before Demonstration 
 Build Images For VENDORs

Slide 23

Slide 23 text

Develop With Docker ක೯ᐑྤ • 安裝 toolchain 與相關開發⼯工具 • 編譯相依 Libraries • prefix: /opt/vendor • 將上述需求整理成 script 與 Dockerfile • docker build -t acme/vendor . • 接著我們能這麼使⽤用 • docker run -ti acme/vendor /bin/bash …

Slide 24

Slide 24 text

Develop With Docker ਖ਼ࣩႾп໔͉ • 進⼊入 docker container • docker-run.sh vendor • docker run -ti acme/vendor /bin/bash • 編譯專案 • docker-build.sh vendor • docker run -ti acme/vendor /bin/bash build.sh

Slide 25

Slide 25 text

Develop With Docker $.BLF • Don’t Be Autofools • 模組化設計,需要 OOO 功能就引⽤用 OOO 模組 • 學習撰寫、改寫 find_package • 開發中的 library 常在⾮非系統預設路徑,適度的改 寫與客製化是必要的。http://bit.ly/1DmrtO3 • 範例:FindLibAO.cmake http://bit.ly/1DmtDgB

Slide 26

Slide 26 text

Develop With Docker • CMake 2.6.0 後開始⽀支援 Cross compiling
 http://bit.ly/1DmsBRN • 將需要 Cross Compiling 設定的變數定義出來,並能 將設定獨⽴立在專屬的檔案內 $SPTT$PNQJMJOH cmake \ -DCMAKE_TOOLCHAIN_FILE=toolchain_vendor.cmake . One vendor, One toolchain file

Slide 27

Slide 27 text

Develop With Docker Any Question Before Demonstration 
 Build our Project

Slide 28

Slide 28 text

Develop With Docker ଡ଼Υٙɢඎ Docker Image For Vendor [a-zA-z0-9]+ CMake Toolchain File for Vendor [a-zA-z0-9]+ X

Slide 29

Slide 29 text

Develop With Docker • 如何免除開發環境建置、維護的負擔 • 如何優雅地寫出符合各種 toolchain 的 Makefile ል୦ɓɨ ͜DockerdɓɛрɢdεɛԮա CMake + Find_Package + ToolchainFile

Slide 30

Slide 30 text

Develop With Docker 2"