Docker

如何直接在 Minikube 內構建容器映像檔

利用 Docker Machine 方式構建映像檔,加速開發不必費時 push & pull images

ta-ching chen

1 minute read

開發流程發生什麼問題

對於一般開發者來說要架設 Kubernetes 是件吃力不討好的事情,自從 minikube 推出後大幅減低進入門檻,讓任何人都可以輕易在電腦上執行本地端的 Kubernetes。minikube 原理是利用 Hyperviosr 在電腦上執行已經安裝好 Kubernetes 的虛擬機,再將 kubelet 的設定指向 minikube 內。

一般開發流程大概是:

  1. 修改程式
  2. 打包成映像檔,送到 remote registry
  3. 更新 pod spec
  4. docker daemon 從 registry 拉最新映像檔

push-pull-image-to-from-remote-registry

透過 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 環境。