DevOps

透過 Multi-Stage Builds 改善持續交付流程

學習利用 Docker multi-stage builds

ta-ching chen

2 minute read

介紹

製作容器映像檔時有個常見的原則: 映像檔越小越好

但針對編譯式語言 (e.g. go, java),由於映像檔本身包含編譯環境、相依套件導致最終的映像檔十分肥大。在文章「打造最小 Go Docker Image」,我們必須先編譯好所需的 artifacts 再放進 scratch 裡面。可以想見對於一個建構持續交付的流水線 (Continuous Delivery Pipeline) 的開發人員而言,上述步驟會變得過於臃腫與繁雜。

為解決此問題在 Docker 17.05+ 以後提供名為「多階段構建 (multi-stage builds)」的新功能,透過將原先流水線中的多個映像檔整合進同個 Dockerfile 內,而後續的映像檔可透過指令取得中間映像檔 (intermediate image) 所產生的檔案 (artifacts),如此便能讓整個過程更為簡單,也確保流水線簡潔易懂及提高維護性。

Adopting Container and Kubernetes in Production

介紹 VMFive 導入 Kubernetes 的前與後

ta-ching chen

1 minute read

演講投影片

  • 2017 Kubernetes Conf (inwinSTACK)

提問回答

Kubernetes v.s Docker Swarm

Docker Swarm 係由 Docker 官方推出用來管理多運算節點的容器編配器,優點在於安裝簡單但功能陽春。現有大規模部署案例中,並無任何使用 Docker Swarm 的例子,可作為小型環境部署測試,但不建議用於 production 環境。

Kubernetes 使用案例較多,從 Pokemon Go 到大陸京東皆有大規模部署使用案例,且目前單個叢集可支援多達上萬個容器。另外,整個 production 所需功能完善、社群蓬勃發展,較適合用來部署線上 production 環境。