|
||
---|---|---|
.. | ||
build.sh | ||
Dockerfile | ||
install.sh | ||
README.md |
本文作者:丁辉
BUILDX构建镜像
安装
-
克隆代码
git clone https://gitee.com/offends/Kubernetes.git cd Kubernetes/Docker/Builder/Buildx
-
安装
./install.sh
手动构建
-
编写 Dockerfile
# vi Dockerfile FROM --platform=$TARGETPLATFORM alpine RUN echo "Startup success" > /os.txt CMD tail -f /os.txt
-
创建了一个名为 "buildx" 的构建器
docker buildx create --use --name=buildx --driver docker-container --driver-opt image=moby/buildkit:buildx-stable-1
参数解释
参数 | 说明 |
---|---|
--use |
将新构建器设置为当前活动的构建器(默认构建器) |
--name=buildx |
指定新构建器的名称为 "buildx" |
--driver docker |
指定使用的驱动程序为 "docker" |
--driver-opt image=... |
指定驱动程序选项,此处是指定 BuildKit 镜像的位置为 "moby/buildkit:buildx-stable-1" |
--config /etc/buildkitd.toml |
指定配置文件 |
-
构建多架构镜像并推送镜像仓库
示例
举例仓库地址为 "offends"
-
第一种方式(简单)
docker buildx build --platform linux/amd64,linux/arm/v7 -t offends/app:v1 . --push
-
第二种方式
docker buildx build --platform linux/amd64,linux/arm/v7 -t offends/app:v1 --output type=registry,dest=offends .
查看 buildx 当前可构建架构
docker buildx ls
-
参数解释
参数 | 解释 |
---|---|
docker buildx build |
执行 Buildx 构建的命令 |
--platform linux/amd64,linux/arm/v6 |
指定要构建的目标平台,这里包括 Linux AMD64 和 ARMv6 |
-t app:v1 |
为构建的镜像设置标签为 "app:v1" |
-f ./Dockerfile |
指定要使用的 Dockerfile 文件路径 |
. |
构建上下文的路径,表示当前目录是构建上下文,其中包含了构建镜像所需的文件和指令 |
--output type=local,dest=.docker |
指定输出类型为本地,并将构建结果输出到名为 .docker 的目录中 |
--output type=oci,dest=<path> |
将构建结果输出为 OCI 格式的镜像包,并保存到指定路径 |
--output type=docker,dest=<path> |
将构建结果输出为 Docker 格式的镜像包,并保存到指定路径 |
--output type=image,name=<image_name> |
将构建的镜像推送到指定的镜像仓库,指定镜像名称 |
--output type=registry,dest=<registry_url> |
将构建的镜像推送到指定的镜像仓库地址 |
--push |
将构建的镜像推送到指定的镜像仓库 |
常用命令
-
删除构建器
docker buildx rm <构建器名称>
-
设置默认构建器
docker buildx use <构建器名称>
-
检查 Docker Buildx 构建器的详细信息
docker buildx inspect
使用脚本构建镜像并推送仓库
前提条件:
已安装 Buildx, 安装脚本: BUILDX安装
登录一个可推送镜像的仓库
docker login <仓库地址> -u <用户名> -p<密码>
根据自己需求添加架构
配置变量
export PLATFORM="linux/amd64,linux/arm/v6"
# 这里的仓库地址需要是一个可推送的镜像仓库才行,否则将推送失败
export IMAGE_NAME=<仓库地址>/<镜像名>
export IMAGE_TAG=<镜像标签>
开始构建
./build.sh