淺談 Moby’s BuildKit
前陣子因為工作需要,研究了一下所謂 Docker build 的 3.0 版本 —— docker buildx build
,希望能找出其與 docker build
背後的差異
docker buildx
指令是使用 Moby’s BuildKit 這套工具來代理 building,所以以下會用 BuildKit 來指稱新的建構模式
直接下結論
- BuildKit 須要透過一個前端服務去轉換 Dockerfile (或其他語言定義的建構流程),再交給 LLB 處理
- 即使是同一個 Dockerfile,docker build/buildx 兩者建構出的 layer 完全不同,無法共享
- 如果你建構很複雜,已經有在使用 multi-stage build(例如須要先編譯成二進制檔案),那會比較有幫助,如果是要 build 類似 python 這種直譯式的應用程式,因為流程較為單純所以幫助不大