Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

大家都用 Docker 來幹麻? #2

Open
vinta opened this issue Oct 12, 2015 · 8 comments
Open

大家都用 Docker 來幹麻? #2

vinta opened this issue Oct 12, 2015 · 8 comments

Comments

@vinta
Copy link

vinta commented Oct 12, 2015

真心想知道大家都怎麼用 Docker,用在什麼地方,跟原有的工具比起來的優勢和缺點。

@chlangjou
Copy link

印象中有個例子蠻有趣的, 假設有幾隻前幾代的 Service, 各自使用了 PHP 5.3 (Login) , PHP 5.4 (會員查詢), PHP 5.5(Html Crawler), 那正規情況,我們要維持整套系統運作, 最好是安裝三個 VM, 或者是賭很大, 把三套通通硬跑在 PHP 5.5 上面....

如果有了 Docker....

@ghost
Copy link

ghost commented Oct 12, 2015

我使用 docker 的經驗比較有限,過去拿來用在 jenkins 測試 infrastructure,這種 repeatability 需求也會簡單拿來當作是程式的 sandbox 使用,像是實驗皿一樣做些觀察與測量,docker 就像 vagrant 有了 git 一樣的版本控制能力,部署的思考上便能簡化到狀態推送,複雜的環境只是 dumb pipes 與 smart endpoint 的邏輯組裝,再進一步延伸運用支援平台來簡化部署。

docker 與 vagrant 常被拿來比較,vagrant 的核心價值是 workflow,而且在開發階段的細節確認通常很有價值,開發者容易忽略系統複雜度與缺乏維運狀態穩定的想像,而 vagrant 的可重複性在驗證流程、環境程式化、CM 上的溝通能力都很好,很適合拿來開發階段的輔助工具。

部署階段 vagrant 過去偏向是透過社群輔助,之前 atlas.hashicorp.com 還未推出,以 packer build 不同 provider 的 box/img,除了要考量 box 建置的困難、安全性、環境變動頻繁的複雜度與彈性,還得考慮 box 的存放,所以在跨雲端與機房部署上的能力比較不足。vagrant 在開發環境與流程驗證的這部分,在 repeatability 上一直很有價值,對於 CM 的親近、彈性很高,所以可以直接透過 vagrantfile 就能釐清問題。去年 vagrantcloud release 確認了 cross cloud/data center storage provider 的路線,而在幾個月前 atlas.hashicorp.com 的服務也進入到如提供線上 travis ci 的 build serivice、也讓 application artifacts 可以注射到 image 裡,把過去部署時在想像上比較困難的地方,進入到有導入動機的階段,像是 consul 實作 raft 容錯、gossip、監控、自動化、monitor ui,terraform plan/apply 具有 cross cloud provider 與 data center 的控管實作,在彈性上都比起 docker 還有吸引力。畢竟小本經營,在移動中維持有高度的行動力,還是很好的策略。

看到一些 docker 研究拿來實作 reproducibility data,像是在 docker 內另築一層以資料為中心的虛擬化,建立成千上萬的 container,有興趣可以看看他們的實作,可行性都很高。ex: HyperCore OS / Interview

@mingderwang
Copy link

把所有程式的執行統一化, 去OS相依性, 去framework 相依性, 去libraries 相依性, 去語言相依性.

@zanhsieh
Copy link

我公司的 Docker 應用沒像各位那麼偉大,相對簡單:

  • 某主管部門展品後端需要跟 LDAP 整合,五分鐘內生套 LDAP 給他測試 -> docker ldap
  • 某主管部門展品後端需要跟 Zabbix Server 整合,五分鐘內生套 Zabbix Server 給他測試 -> docker zabbix server
  • 某主管部門展品後端需要跟 Jira 整合,五分鐘內生套 Jira 給他測試 -> docker jira

...
...

附帶一句,這些同事自從第一次開始使用 Docker ,平均至少幾個月才會回來問:

  • 某某某沒 Docker Image,可以幫忙包一個嗎?
  • 我們能不能夠全部機都換成 Debian?

@jessy1092
Copy link

最近用 docker 在公司架了 gitlab 和 gitlab-ci-runner ,結合 版控 跟 CI,每次跑 CI 就開個 container 很方便。

@qrtt1
Copy link

qrtt1 commented Oct 12, 2015

Server Side

我們有用 docker 來架 nginx 服務使用者。因為有加上自己刻的 module 所以就不是預設安裝的 nginx 了。由 docker 切出 4 層 image (由上至下為相依關係)

  1. base image
  2. toolcahin image
  3. compiled nginx with module
  4. runtime configuration

開發跟修改起來挺方便的。

Dev

公司有些東西是要寫 arm 或 mips 平台的東西,不同廠商給的 toolchain 需求環境不同。運用 docker 能抽象化環境的特性,來包裝 toolchain(一個 vendor 一個 image)

  1. build toolchain image + host-build-script
  2. cmake + toolchain configuration file (2.x 後有支援 toolchain file,不用再塞在一個檔內)
  3. 運用簡單的 function pointer 達到『多形』的效果,不同平台的實作適情況編譯

https://github.com/qrtt1/PyHUG20150303

PS. 除了 vendor 的 toolchain image,另外包 1 個 x86dev 的 image,沒有 device 能玩時,可以在 x86dev 上編起來玩(需適度把平台相依的 api 架空)

PS. 再多包了一層的 Vagrant 在外面。一來是給 windows 開發者用(小心 \r\n\r 弄亂的 Dockerfile),二來是需要燒韌體時方便,因為可以設好 usb filter,只要啟 vbox 就完燒韌體的準備工作了(不用每個人都來問要怎麼設定,按圖施工保證成功)。

@JustinSDK
Copy link

@hrchu
Copy link

hrchu commented Mar 7, 2016

對於需要複雜的整合測試環境的open source project(多node, 容易爛掉的perl環境),
用docker提供一個ready to use的環境,方便contributor

https://github.com/mogilefs-moji/moji-docker

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

8 participants