本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com
官方 Dockerfile 前端镜像,支持通过 BuildKit 构建 Dockerfile。
#buildkit 频道1.19.0, 1.19, 1, latest1.18.0, 1.181.19.0-labs, 1.19-labs, 1-labs, labs1.18.0-labs, 1.18-labsmastermaster-labs如果使用 Docker v18.09 或更高版本,可通过客户端设置 export DOCKER_BUILDKIT=1 启用 BuildKit 模式。
Docker Buildx 则默认启用 BuildKit。
BuildKit 支持从容器镜像动态加载前端。Dockerfile 前端镜像可在 docker/dockerfile 仓库获取。
需在 Dockerfile 首行通过 # syntax=docker/dockerfile:<版本> 指定要使用的外部前端镜像,例如:
# syntax=docker/dockerfile:1.3
BuildKit 内置了 Dockerfile 前端,但建议使用外部镜像,确保所有构建者使用相同版本,且无需等待 BuildKit 或 Docker 引擎更新即可自动获取 bug 修复。
外部镜像分两个渠道:
COPY --link、ADD --link需将 Dockerfile 版本至少设为 1.4:
# syntax=docker/dockerfile:1.4
COPY 或 ADD 命令添加 --link 标志后,文件会作为独立层存在,前序层命令变更时不会导致该层失效。原理是将源文件复制到空目标目录,该目录作为独立层链接到之前的构建状态。
# syntax=docker/dockerfile:1.4 FROM alpine COPY --link /foo /bar
等效于分别构建两个镜像后合并层:
# 基础镜像构建 FROM alpine # 独立层构建 FROM scratch COPY /foo /bar
--cache-from 时,即使前序层变更,仍可复用已构建的 --link 层。COPY --from 不再因前序命令变更而失效,无需重建中间阶段。RUN --mount=...需将 Dockerfile 版本至少设为 1.2:
# syntax=docker/dockerfile:1.3
RUN --mount 允许构建容器挂载文件、缓存、临时文件系统等,支持多种挂载类型。
type=bind(默认类型)将上下文或镜像中的目录以只读方式挂载到构建容器,可通过 rw 允许写入(写入数据会被丢弃)。
| 选项 | 说明 |
|---|---|
target(必填) | 挂载路径 |
source | 源路径(默认 from 的根目录) |
from | 源所在的构建阶段或镜像(默认上下文) |
rw/readwrite | 允许写入 |
type=cache为编译器、包管理器等缓存目录,加速构建。
| 选项 | 说明 |
|---|---|
id | 缓存标识(默认 target 值) |
target(必填) | 挂载路径 |
ro/readonly | 只读 |
sharing | 缓存共享模式:shared(多写共享)、private(多写新建)、locked(多写排队),默认 shared |
from/source | 缓存基础阶段及子路径(默认空目录) |
mode/uid/gid | 缓存目录的权限、用户/组 ID(默认 0755、0、0) |
缓存 Go 依赖:
# syntax=docker/dockerfile:1.3 FROM golang RUN --mount=type=cache,target=/root/.cache/go-build go build ...
缓存 apt 包:
# 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
type=tmpfs挂载临时文件系统,可限制大小。
| 选项 | 说明 |
|---|---|
target(必填) | 挂载路径 |
size | 最大容量限制 |
type=secret安全挂载密钥文件(如私钥),避免 baked 进镜像。
| 选项 | 说明 |
|---|---|
id | 密钥 ID(默认目标路径basename) |
target | 挂载路径(默认 /run/secrets/<id>) |
required | 密钥不可用时是否报错(默认 false) |
mode/uid/gid | 密钥文件的权限、用户/组 ID(默认 0400、0、0) |
Dockerfile:
# syntax=docker/dockerfile:1.3 FROM python:3 RUN pip install awscli RUN --mount=type=secret,id=aws,target=/root/.aws/credentials aws s3 cp s3://... ...
构建命令:
$ docker build --secret id=aws,src=$HOME/.aws/credentials . # 或使用 buildctl $ buildctl build --frontend=dockerfile.v0 --local context=. --local dockerfile=. \ --secret id=aws,src=$HOME/.aws/credentials
type=ssh通过 SSH 代理访问 SSH 密钥(支持密码短语)。
| 选项 | 说明 |
|---|---|
id | SSH 代理 socket 或密钥 ID(默认 "default") |
target | 代理 socket 路径(默认 /run/buildkit/ssh_agent.${N}) |
required | 密钥不可用时是否报错(默认 false) |
mode/uid/gid | socket 文件的权限、用户/组 ID(默认 0600、0、0) |
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 [邮箱已删除] 2>&1 | tee /hello
构建步骤:
$ eval $(ssh-agent) # 启动 SSH 代理 $ ssh-add ~/.ssh/id_rsa # 添加密钥(输入密码短语) $ docker build --ssh default=$SSH_AUTH_SOCK . # 传递代理 socket
RUN --network=none|host|default需将 Dockerfile 版本设为 1.3:
# syntax=docker/dockerfile:1.3
RUN --network 控制命令的网络环境:
none:无网络访问(仅 lo 回环,进程隔离)。host:使用主机网络(类似 docker build --network=host,需 network.host 权限)。default:默认网络(不指定时的行为)。# syntax=docker/dockerfile:1.3 FROM python:3.6 ADD mypackage.tgz wheels/ RUN --network=none pip install --find-links wheels mypackage # 仅用本地包
需将 Dockerfile 版本设为 1.4.0 及以上:
# syntax=docker/dockerfile:1.4
支持将后续行作为 RUN 或 COPY 命令的输入,通过分隔符(如 eot)界定内容。
RUN 中的多行脚本# syntax=docker/dockerfile:1.4 FROM debian RUN <<eot bash # 指定解释器 bash apt-get update apt-get install -y vim eot # 分隔符结束
若未指定解释器,默认使用 shell;也可通过 shebang 指定:
# syntax=docker/dockerfile:1.4 FROM python:3.6 RUN <<eot #!/usr/bin/env python print("hello world") eot
COPY 中的内联文件通过 here-doc 直接传递文件内容,支持变量展开和制表符剥离:
# syntax=docker/dockerfile:1.4 FROM alpine ARG FOO=bar COPY <<-eot /app/foo # "-" 剥离行首制表符 hello ${FOO} # 展开变量 FOO(值为 bar) eot
单引号分隔符(<<-"eot")可禁用变量展开:
# syntax=docker/dockerfile:1.4 FROM alpine COPY <<-"eot" /app/script.sh # 保留 ${FOO} 原样 echo hello ${FOO} eot RUN FOO=abc ash /app/script.sh # 运行时传入 FOO=abc
RUN --security=insecure|sandbox需使用 labs 渠道版本:
# syntax=docker/dockerfile:1.3-labs
--security=insecure 允许命令以特权模式运行(类似 docker run --privileged),需 security.insecure 权限(启动 buildkitd 时 --allow-insecure-entitlement security.insecure,构建时 --allow security.insecure)。
# syntax=docker/dockerfile:1.3-labs FROM ubuntu RUN --security=insecure cat /proc/self/status | grep CapEff # 查看有效 capabilities
输出示例(特权模式下权限全开):
CapEff: 0000003fffffffff
免费版仅支持 Docker Hub 加速,不承诺可用性和速度;专业版支持更多镜像源,保证可用性和稳定速度,提供优先客服响应。
免费版仅支持 docker.io;专业版支持 docker.io、gcr.io、ghcr.io、registry.k8s.io、nvcr.io、quay.io、mcr.microsoft.com、docker.elastic.co 等。
当返回 402 Payment Required 错误时,表示流量已耗尽,需要充值流量包以恢复服务。
通常由 Docker 版本过低导致,需要升级到 20.x 或更高版本以支持 V2 协议。
先检查 Docker 版本,版本过低则升级;版本正常则验证镜像信息是否正确。
使用 docker tag 命令为镜像打上新标签,去掉域名前缀,使镜像名称更简洁。
探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录方式配置轩辕镜像加速服务,包含7个详细步骤
在 Linux 系统上配置轩辕镜像源,支持主流发行版
在 Docker Desktop 中配置轩辕镜像加速,适用于桌面系统
在 Docker Compose 中使用轩辕镜像加速,支持容器编排
在 k8s 中配置 containerd 使用轩辕镜像加速
在宝塔面板中配置轩辕镜像加速,提升服务器管理效率
在 Synology 群晖NAS系统中配置轩辕镜像加速
在飞牛fnOS系统中配置轩辕镜像加速
在极空间NAS中配置轩辕镜像加速
在爱快ikuai系统中配置轩辕镜像加速
在绿联NAS系统中配置轩辕镜像加速
在威联通NAS系统中配置轩辕镜像加速
在 Podman 中配置轩辕镜像加速,支持多系统
配置轩辕镜像加速9大主流镜像仓库,包含详细配置步骤
无需登录即可使用轩辕镜像加速服务,更加便捷高效
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429