前言
- 為了 EC2 搬家、改用
ARM64
架構,原有的 image 都要重新 build,而且要同時支援AMD64
與ARM64
。 - 本篇簡單紀錄 docker buildx 的使用方式。
說明
安裝方式
如果你是依照官網的文件做的話,在安裝 docker 的時候,應該已經有安裝了。
例如 CentOS [2]
如果沒有的話,就手動安裝:
|
|
先登入
建議使用 docker hub 的 token 來登入,不要用自己的密碼。
一方面 token 複雜度通常都比密碼高,另一方面,隨時可以依照需求 expire 它。
產生方式:
My Account -> Security -> New Access Token
按下 Generate
之後複製好你的 token,這就是登入要用的密碼。
|
|
build!
之前可以先 build 再 push;但多架構的話,一定要先有一個 builder,然後 build 跟 push 一氣呵成:
|
|
${IMAGE_NAME}
範例:ktlast/my-best-api:latest
- 如果你也是用 docker hub automatic build,只要給 literally
${IMAGE_NAME}
他會自己幫你套用變數。
Note
-
如果在自己的電腦上,builder 只需要建立一次。所以以上面的指令來說,如果有好幾個 image 要 build,之後只需要跑第 2 行即可。
-
切換 builder:
1 2
docker buildx ls docker buildx use ${BUILDER_NAME}
-
我是在 CI 上面跑,所以腳本直接無腦寫、每次都執行。
-
因為我只需要
amd64
以及arm64
,如果有其他架構,可以自行加入。查看所有支援的架構:
1 2 3 4
docker buildx inspect | grep Platforms # output Platforms: linux/arm64, linux/amd64, linux/riscv64, linux/ppc64le, linux/s390x, linux/386, linux/mips64le, linux/arm/v7, linux/arm/v6