目前大部分使用docker的场景中不单单只是amd64平台了有时我们需要再arm和adm64上都能运行
新版本的docker默认自带
创建buildx
1 2 3 4
| docker buildx ls # NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS # default * docker # default default running 23.0.5 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/386
|
默认会有个实例叫default,default实例下有一个default的node,一个实例下可以有多个node,星号是默认使用的实例,node有很多种类型
1 2
| docker buildx create --name main --node local --driver docker-container --platform linux/amd64,linux/arm64,linux/arm/v8 --use # main
|
1 2 3 4 5 6
| docker buildx ls NAME/NODE DRIVER/ENDPOINT STATUS BUILDKIT PLATFORMS main * docker-container local unix:///var/run/docker.sock inactive linux/amd64*, linux/arm64*, linux/arm/v8* default docker default default running 23.0.5 linux/amd64, linux/amd64/v2, linux/amd64/v3, linux/386
|
参数 |
说明 |
–name |
实例名字 |
–drive |
使用的驱动:docker,docker-contran,k8s,remote |
–driver-op |
设置各个驱动的参数,比如docker-contran的镜像,k8s驱动的副本数等 |
–platform |
编译的平台 |
–user |
默认使用这个实例,等同于docker buildx use |
- 当我们执行编译的时候会先下载buildx镜像并运行起来,然后使用这个容器运行的buildx来编译镜像
编译
- –platform执行要编译的平台,其他的参数和普通的build差不多
1 2
| # 直接上传到仓库 docker buildx build --platform linux/amd64,linux/arm64,linux/arm -t naturelingran/m3u8-downloader -o type=registry .
|
1
| docker buildx build --platform linux/amd64,linux/arm64,linux/arm -t naturelingran/m3u8-downloader -o type=local,dest=./output .
|
1
| docker buildx build --platform linux/amd64,linux/arm64,linux/arm -t naturelingran/m3u8-downloader --output type=tar,dest=./output.tar .
|
1
| docker buildx build --platform linux/arm64 -t naturelingran/m3u8-downloader --load .
|
参考资料
https://docs.docker.com/engine/reference/commandline/buildx_create