|
# docker build --help 输出解析 Usage: docker buildx build [OPTIONS] PATH | URL | - # 使用方式:docker buildx build [选项] 路径|URL|- (路径可以是本地文件夹、Git仓库URL或Dockerfile内容) Start a build # 开始构建镜像 Aliases: docker build, docker builder build, docker image build, docker buildx build # 别名:上述命令均可用于启动构建过程 Options: --add-host strings # 添加自定义主机到IP映射(格式:"host:ip") --allow strings # 允许额外的特权权限(如:"network.host", "security.insecure") --annotation stringArray # 为镜像添加元数据注解 --attest stringArray # 提供证明参数(格式:"type=sbom,generator=image") --build-arg stringArray # 设置构建时变量(环境变量),这些变量可以在Dockerfile中使用ARG指令引用 --build-context stringArray # 添加额外的构建上下文(例如:"name=path"),可用于多阶段构建或多源构建 --builder string # 指定要使用的构建器实例,默认是"default" --cache-from stringArray # 使用外部缓存来源加速构建(例如:"user/app:cache", "type=local,src=path/to/dir") --cache-to stringArray # 将构建缓存导出到指定位置(例如:"user/app:cache", "type=local,dest=path/to/dir") --call string # 设置评估构建的方法("check", "outline", "targets"),默认是"build" --cgroup-parent string # 为构建过程中执行的RUN指令设置父cgroup --check # 简写形式的"--call=check",用于检查构建配置 -D, --debug # 启用调试日志输出 -f, --file string # 指定Dockerfile的位置,默认是当前目录下的Dockerfile --iidfile string # 将生成的镜像ID写入到指定文件 --label stringArray # 为镜像设置标签(metadata) --load # 构建完成后加载镜像到本地镜像库,等价于"--output=type=docker" --metadata-file string # 将构建结果的元数据写入到指定文件 --network string # 为构建期间的RUN指令设置网络模式,默认是"default" --no-cache # 构建时不使用缓存 --no-cache-filter stringArray # 不缓存特定阶段,以加快其他阶段的构建速度 -o, --output stringArray # 指定构建输出的目标位置和类型(例如:"type=local,dest=path") --platform stringArray # 指定目标平台(操作系统/架构),允许跨平台构建 --progress string # 设置进度输出的格式("auto", "plain", "tty", "rawjson")。默认是"auto" --provenance string # 简写形式的"--attest=type=provenance",用于记录镜像出处信息 --pull # 构建前总是尝试拉取最新的基础镜像 --push # 构建完成后直接推送到镜像仓库,等价于"--output=type=registry" -q, --quiet # 抑制构建输出,仅在成功后打印镜像ID --sbom string # 简写形式的"--attest=type=sbom",用于软件物料清单(Software Bill of Materials) --secret stringArray # 在构建过程中暴露秘密信息(例如:"id=mysecret[,src=/local/secret]") --shm-size bytes # 设置构建容器的共享内存大小 --ssh stringArray # 暴露SSH代理套接字或密钥给构建过程(例如:"default|<id>[=<socket>|<key>[,<key>]]") -t, --tag stringArray # 为构建的镜像指定名称和标签(例如:"name:tag") --target string # 设置要构建的多阶段Dockerfile中的目标阶段 --ulimit ulimit # 设置构建容器的ulimit限制(例如:nofile=1024:1024)
关键点总结:
--build-arg 和 --secret 是用来传递敏感信息或构建时所需的参数。
--cache-from 和 --cache-to 可以显著提高构建速度,特别是在重复构建相同项目时。
--platform 支持跨平台构建,这对于开发多平台应用非常重要。
--output 和 --push 可以简化工作流,允许构建完成后立即将镜像导出或推送至远程仓库。
--target 对于多阶段构建特别有用,可以选择只构建Dockerfile中的特定阶段。
通过理解每个选项的作用,你可以更灵活地控制 Docker 镜像的构建过程,优化构建效率并确保镜像的安全性和正确性。