
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
amd64, arm32v6, arm32v7, arm64v8, i386, ppc64le, s390xdocker-buildx?docker-buildx是基于Alpine Linux构建的容器镜像,已安装Docker并添加了buildx支持。buildx是Docker CLI的扩展插件,提供BuildKit的增强构建能力,支持使用同一Dockerfile构建多架构镜像。更多关于buildx功能的信息,请点击https://github.com/docker/buildx%E3%80%82
docker-buildx构建多架构镜像最简便的方式是使用Google Cloud Platform的Cloud Build,该镜像作为工具构建器调用docker buildx命令。传递给此构建器的参数将直接传递给docker buildx,允许调用者运行任何docker buildx命令。
目前没有官方镜像提供此特定用途(即利用Docker的buildx命令构建多架构镜像),下面给出一个cloudbuild.yaml示例,用于在GCP Cloud Build上自动化构建。
yaml# 示例cloudbuild.yaml文件 steps: - name: 'harshavardhanj/docker-buildx:latest' args: ['build', '-t', '[IMAGE_NAME:IMAGE_TAG]', '-f', '/path/to/Dockerfile', '.']
以下示例展示了使用此构建器的构建请求:
构建并推送镜像到Google Container Registry(GCR)
此cloudbuild.yaml调用docker buildx并将结果镜像推送到GCR。
yamlsteps: - name: 'harshavardhanj/docker-buildx:latest' args: ['build', '-t', 'gcr.io/$PROJECT_ID/image_name', '.'] images: ['gcr.io/$PROJECT_ID/image_name']
就buildx的功能而言,其主要优势是无需修改Dockerfile即可构建多架构支持的镜像。
构建并推送镜像到Docker Hub
使用GCP Secrets Manager
通用步骤:建议在Docker Hub创建访问令牌,避免暴露账户密码,且可随时创建/撤销令牌。
需启用GCP的Secrets Manager API,设置步骤见此处。启用后创建两个密钥:Docker Hub用户名和访问令牌。
创建密钥后,授予Cloud Build服务账户访问这两个密钥的权限,参考此页面(步骤类似,适用于Secrets Manager)。权限授予后,即可创建cloudbuild.yaml及所需文件。
以下是用于Cloud Build构建并推送镜像到Docker Hub的简化cloudbuild.yaml:
yamlsteps: # 获取Docker Hub用户名和访问令牌,并保存到后续步骤可访问的文件 - name: 'gcr.io/cloud-builders/gcloud' entrypoint: "bash" args: ["./docker-cloud-builder/getCredentials.sh"] # 使用前一步获取的凭据登录Docker Hub - name: 'gcr.io/cloud-builders/docker' entrypoint: "bash" args: ["-c", "docker login --username=$(cat ./UserID) --password=$(cat ./AccessToken)"] # 拉取buildx镜像并构建多架构镜像 - name: 'harshavardhanj/docker-buildx:latest' args: - 'build' - '-t' - 'harshavardhanj/docker-buildx:latest' - '--platform' - 'linux/amd64,linux/arm64,linux/386,linux/arm/v7,linux/arm/v6' - '-f' - './docker-cloud-builder/Dockerfile' - '--push' - './docker-cloud-builder/.'
getCredentials.sh脚本:
sh#!/usr/bin/env sh # #: 标题 : getCredentials.sh #: 日期 : 2020-02-17 #: 作者 : "Harsha Vardhan J" <vardhanharshaj@gmail.com> #: 版本 : 0.1 #: 描述 : 用于Cloud Build获取凭据以登录Docker Hub的脚本 #: 选项 : 无 #: 使用 : 该脚本适用于GCP Cloud Build ################ # 封装gcloud命令以访问密钥 getCreds() { # 如果提供两个参数且第二个参数非空 if [[ $# -eq 2 && -n ${2} ]] ; then # 用于访问密钥的gcloud命令 gcloud beta secrets versions access ${1} --secret="${2}" else exit 1 fi } # 调用getCreds函数,传入密钥版本和密钥名称 getCreds 1 DockerHubUserID > ./UserID getCreds 1 DockerHubAccessToken > ./AccessToken # 脚本结束
需修改的内容:最终步骤中的镜像标签和Dockerfile路径。以下是通用模板,可用于构建多架构镜像:
yamlsteps: # 获取Docker Hub用户名和访问令牌 - name: 'gcr.io/cloud-builders/gcloud' entrypoint: "bash" args: ["./path/to/getCredentials.sh/from/repo/root"] # 登录Docker Hub - name: 'gcr.io/cloud-builders/docker' entrypoint: "bash" args: ["-c", "docker login --username=$(cat ./UserID) --password=$(cat ./AccessToken)"] # 构建并推送多架构镜像 - name: 'harshavardhanj/docker-buildx:latest' args: - 'build' - '-t' - '[dockerHub用户名]/[镜像名称]:[镜像标签]' - '-t' - '[dockerHub用户名]/[镜像名称]:[额外标签]' - '--platform' - 'linux/amd64,linux/arm64,linux/s390x,linux/386,linux/arm/v7,linux/arm/v6' - '-f' - './path/to/Dockerfile/from/repo/root' - '--push' - './path/to/Dockerfile/directory/.'
--platform参数可根据需要调整,若某些架构构建失败(日志可见),可移除对应的架构。
使用GCP密钥管理服务(KMS)
此方法需更多步骤以验证Docker Hub身份,详细步骤见GCP Cloud Build文档。
注意事项
在Secrets Manager或KMS中存储和访问密钥会产生费用(虽然较低),需注意成本。
cloudbuild.yaml的额外选项
timeout
Cloud Build默认10分钟后终止构建,可通过timeout选项覆盖:
yamlsteps: - name: ... - name: ... timeout: "1200s"
timeout值以秒为单位,示例中为20分钟。若构建时间较长,建议设置此选项。
machineType
Cloud Build支持使用更强大的CPU,通过options下的machineType指定:
yamlsteps: - name: ... - name: ... options: machineType: 'N1_HIGHCPU_8'
支持的类型:
N1_HIGHCPU_8(8核CPU)N1_HIGHCPU_32(32核CPU)注意:使用此选项会产生费用,且构建启动可能较慢(资源 provisioning)。
docker-buildx镜像提供以下变体/标签:
docker-buildx:stable该镜像也可用以下标签访问:
latest19.03.5-r019.03.519.03如标签所示,此镜像经过充分测试,推荐使用。版本号对应镜像中安装的Docker版本。
docker-buildx:testing所有新功能或变更会先在此镜像中引入,测试后再合并到stable镜像。有时可能与stable镜像相同,不建议生产环境使用。
docker-buildx:non-root该镜像以非root用户(当前为docker)运行buildx可执行文件。无stable标签不代表不稳定,其稳定性与stable镜像一致,适合不希望以root身份运行容器的场景。
docker-buildx:untested此镜像不供公开使用,仅用于内部测试。使用此镜像可能导致失败或错误,甚至无法启动容器。
目前,镜像仓库中的软件未应用特定许可证。与所有Docker镜像一样,其中可能包含其他受不同许可证约束的软件(如基础发行版中的Bash等,以及包含的主要软件的任何直接或间接依赖项)。对于任何预构建镜像的使用,镜像用户有责任确保其使用符合所有包含软件的相关许可证。
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务