如果你使用 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 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
本镜像为 docker/dockerfile 正式发布前的暂存版本(Staging),用于测试和预发布验证。生产环境应使用 Docker Hub 上的正式仓库:https://hub.docker.com/repository/docker/docker/dockerfile%E3%80%82
作为 BuildKit 的官方 Dockerfile 前端镜像,提供动态加载能力,支持高级 Dockerfile 语法和构建特性,使 Docker 镜像构建更灵活、高效。
bind、cache、tmpfs、secret、ssh 五种挂载类型,实现依赖缓存、密钥安全管理等功能RUN --network 指令控制单条命令的网络环境(none/host/default)--security=insecure 模式,允许特权操作(需 labs 版本)| 标签 | 说明 | Dockerfile 路径 |
|---|---|---|
1.19.0, 1.19, 1, latest | 1.19 系列稳定版 | https://github.com/moby/buildkit/blob/dockerfile/1.19.0/frontend/dockerfile/cmd/dockerfile-frontend/Dockerfile |
1.18.0, 1.18 | 1.18 系列稳定版 | https://github.com/moby/buildkit/blob/dockerfile/1.18.0/frontend/dockerfile/cmd/dockerfile-frontend/Dockerfile |
| 标签 | 说明 | Dockerfile 路径 |
|---|---|---|
1.19.0-labs, 1.19-labs, 1-labs, labs | 1.19 系列实验版 | https://github.com/moby/buildkit/blob/dockerfile/1.19.0-labs/frontend/dockerfile/cmd/dockerfile-frontend/Dockerfile |
| 标签 | 说明 | Dockerfile 路径 |
|---|---|---|
master | master 分支稳定开发版 | https://github.com/moby/buildkit/blob/dockerfile/master/frontend/dockerfile/cmd/dockerfile-frontend/Dockerfile |
master-labs | master 分支实验开发版 | https://github.com/moby/buildkit/blob/dockerfile/master/frontend/dockerfile/cmd/dockerfile-frontend/Dockerfile |
5.1.1 Docker 原生支持(v18.09+)
通过环境变量启用 BuildKit 模式:
bashexport DOCKER_BUILDKIT=1 # 客户端设置,仅当前终端生效
5.1.2 Docker Buildx
Docker Buildx 内置启用 BuildKit,无需额外配置:
bashdocker buildx build . # 直接使用 Buildx 构建
通过 Dockerfile 首行的 # syntax 指令指定本暂存镜像作为前端,格式:
dockerfile# syntax=docker/dockerfile:<标签> # 例如:# syntax=docker/dockerfile:1.19.0-labs
说明:
1.19.0-labs),正式版需替换为 docker/dockerfile 仓库标签5.3.1 Build Mounts(RUN --mount=...)
需指定 Dockerfile 版本 ≥1.2(如 # syntax=docker/dockerfile:1.3),支持以下挂载类型:
5.3.1.1 type=bind(默认类型)
绑定构建上下文或其他构建阶段的目录(只读,可通过 rw 选项启用读写)。
| 参数 | 说明 |
|---|---|
target | 必填,挂载路径 |
source | 源路径,默认值为 from 指定阶段的根目录 |
from | 构建阶段或镜像名称,默认值为构建上下文 |
rw/readwrite | 启用读写模式,写入数据构建后会被丢弃 |
5.3.1.2 type=cache
为编译器、包管理器等提供持久化缓存目录,加速构建。
| 参数 | 说明 |
|---|---|
target | 必填,挂载路径 |
id | 缓存标识,默认值为 target 的路径 |
ro/readonly | 只读模式 |
sharing | 缓存共享模式:shared(多写入者共享)、private(独立缓存)、locked(独占锁),默认 shared |
from | 缓存基础阶段,默认空目录 |
source | from 中的子路径,默认根目录 |
mode | 缓存目录权限(八进制),默认 0755 |
uid/gid | 缓存目录所有者 UID/GID,默认 0 |
示例:缓存 Go 依赖
dockerfile# syntax=docker/dockerfile:1.3 FROM golang RUN --mount=type=cache,target=/root/.cache/go-build go build -o app ./main.go
示例:缓存 apt 包
dockerfile# syntax=docker/dockerfile:1.3 FROM ubuntu # 配置 apt 保留下载缓存 RUN rm -f /etc/apt/apt.conf.d/docker-clean && echo 'Binary::apt::APT::Keep-Downloaded-Packages "true";' > /etc/apt/apt.conf.d/keep-cache # 挂载 apt 缓存目录 RUN --mount=type=cache,target=/var/cache/apt --mount=type=cache,target=/var/lib/apt \ apt update && apt-get --no-install-recommends install -y gcc
5.3.1.3 type=tmpfs
挂载临时文件系统,用于临时存储。
| 参数 | 说明 |
|---|---|
target | 必填,挂载路径 |
5.3.1.4 type=secret
安全挂载密钥文件(如 API 密钥、证书),避免密钥嵌入镜像。
| 参数 | 说明 |
|---|---|
id | 密钥标识,默认值为 target 的文件名 |
target | 挂载路径,默认值 /run/secrets/<id> |
required | 密钥不可用时是否报错,默认 false(不报错) |
mode | 密钥文件权限(八进制),默认 0400 |
uid/gid | 密钥文件所有者 UID/GID,默认 0 |
示例:使用 AWS 密钥访问 S3
dockerfile# syntax=docker/dockerfile:1.3 FROM python:3 RUN pip install awscli # 挂载 AWS 密钥文件到 /root/.aws/credentials RUN --mount=type=secret,id=aws,target=/root/.aws/credentials aws s3 cp s3://my-bucket/file.txt .
构建命令:
bashdocker build --secret id=aws,src=$HOME/.aws/credentials .
5.3.1.5 type=ssh
通过 SSH 代理挂载 SSH 密钥,支持带密码的密钥(需通过 ssh-agent 解锁)。
| 参数 | 说明 |
|---|---|
id | SSH 标识,默认 default |
target | SSH 代理套接字路径,默认 /run/buildkit/ssh_agent.${N} |
required | 密钥不可用时是否报错,默认 false |
mode | 套接字权限(八进制),默认 0600 |
uid/gid | 套接字所有者 UID/GID,默认 0 |
示例:访问 GitLab 私有仓库
dockerfile# syntax=docker/dockerfile:1.3 FROM alpine RUN apk add --no-cache openssh-client RUN mkdir -p -m 0700 ~/.ssh && ssh-keyscan gitlab.com >> ~/.ssh/known_hosts RUN --mount=type=ssh ssh -q -T git@gitlab.com # 验证 SSH 连接
构建命令:
basheval $(ssh-agent) # 启动 SSH 代理 ssh-add ~/.ssh/id_rsa # 添加密钥(输入密码解锁) docker build --ssh default=$SSH_AUTH_SOCK . # 挂载 SSH 代理套接字
5.3.2 网络模式控制(RUN --network=...)
需指定 Dockerfile 版本 ≥1.3(如 # syntax=docker/dockerfile:1.3),控制单条 RUN 命令的网络环境。
| 网络模式 | 说明 |
|---|---|
none | 无网络(仅保留 lo 回环接口,与外部隔离) |
host | 使用主机网络(需 network.host 权限,通过 --allow-insecure-entitlement network.host 启用) |
default | 默认网络(与未指定 --network 效果一致) |
示例:隔离外部网络依赖
dockerfile# syntax=docker/dockerfile:1.3 FROM python:3.6 ADD mypackage.tgz wheels/ # 提前下载依赖包到构建上下文 RUN --network=none pip install --find-links wheels mypackage # 仅使用本地依赖
5.3.3 安全上下文(RUN --security=...)
需使用 labs 通道(如 # syntax=docker/dockerfile:1.3-labs),控制命令的安全模式。
| 参数值 | 说明 |
|---|---|
insecure | 禁用沙箱,以特权模式运行(等效于 docker run --privileged),需 security.insecure 权限 |
sandbox | 默认沙箱模式(无实际效果,显式指定用) |
示例:获取特权能力
dockerfile# syntax=docker/dockerfile:1.3-labs FROM ubuntu RUN --security=insecure cat /proc/self/status | grep CapEff # 查看有效能力集
构建命令(需 BuildKitd 启用权限):
bashbuildctl build --frontend=dockerfile.v0 \ --local context=. --local dockerfile=. \ --allow-insecure-entitlement security.insecure
5.3.4 Here-Documents(文档内联)
需使用 labs 通道(≥1.3.0-labs,如 # syntax=docker/dockerfile:1.3-labs),支持多行命令内联。
语法:
dockerfileRUN <<<分隔符 [命令] 内联内容... 分隔符
${VAR})和制表符自动剥离(<<-分隔符)#!/usr/bin/env python)指定解释器示例 1:多行 Shell 命令
dockerfile# syntax=docker/dockerfile:1.3-labs FROM debian RUN <<eot bash apt-get update apt-get install -y vim eot
示例 2:Python 脚本内联
dockerfile# syntax=docker/dockerfile:1.3-labs FROM python:3.6 RUN <<eot #!/usr/bin/env python print("Hello, Here-Documents!") eot
示例 3:创建文件
dockerfile# syntax=docker/dockerfile:1.3-labs FROM alpine COPY <<-eot /app/config.txt # "-" 自动剥离内容中的前导制表符 server.port=8080 log.level=info eot
type=cache 缓存 npm/pip/apt 依赖,加速多阶段构建type=secret/ssh 安全挂载密钥,避免硬编码敏感信息--network=none 确保构建不依赖外部网络,提升可重复性--security=insecure 调试需要特权的构建流程(如内核模块加载)docker/dockerfile 的稳定版标签(如 1.19)labs 标签(如 1.19.0-labs)master/master-labs 标签获取最新开发特性| 变量名 | 说明 |
|---|---|
DOCKER_BUILDKIT | Docker 客户端启用 BuildKit:export DOCKER_BUILDKIT=1(v18.09+ 支持) |
syntax 指令格式dockerfile# syntax=docker/dockerfile:<标签>
<标签>:暂存版镜像标签(如 1.19.0-labs、master),需与镜像拉取标签一致--network=host:需 BuildKitd 启动时添加 --allow-insecure-entitlement network.host,构建时通过 --allow network.host 启用--security=insecure:需 BuildKitd 启动时添加 --allow-insecure-entitlement security.insecure,构建时通过 --allow security.insecure 启用--ssh:带密码的密钥需通过 ssh-agent 解锁,直接挂载 .pem 文件不支持密码保护您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。



来自真实用户的反馈,见证轩辕镜像的优质服务