!CircleCI
Docker Recipe 是一种(通常非常小的)Docker 镜像,用于多阶段构建中,使您无需反复查找和编写“包含软件 XYZ 的最佳 Dockerfile 代码段”(例如 gosu、tini 等)。它们主要基于 ONBUILD 指令,旨在作为独立构建阶段使用。
dockerfileDockerfile FROM vsiri/recipe:tini as tini FROM vsiri/recipe:gosu as gosu FROM debian:9 # 实际业务镜像 RUN echo stuff # 示例命令 COPY --from=tini /usr/local /usr/local COPY --from=gosu /usr/local /usr/local # 所有 recipes 通用的补丁命令 RUN shopt -s nullglob; for patch in /usr/local/share/just/container_build_patch/*; do "${patch}"; done
Recipes 可直接从 DockerHub 使用,也可将此仓库作为子模块包含在项目中,直接基于 Dockerfile 构建。
许多 recipes 包含构建参数,用于控制安装的软件版本(通常)。除非使用默认值,否则需在构建时指定这些参数:
docker 时:docker build --build-arg key=val ...docker compose 时:docker buildx bake --set *.args.key=val ...(建议在 docker-compose.yml 中配置)注意:无法在 Dockerfile 的全局部分添加 ARG 并期望其默认值影响 recipe,这与 recipe 的工作机制不符。
这不是一种“包含”或“导入”Dockerfile 的通用方法,仅在特定条件下适用:
ADD 命令轻松添加| 名称 | VSI Common |
|---|---|
| 输出目录 | /vsi |
提供 VSI 通用函数,即使使用 just 可执行文件,也能在容器中复制这些函数。
示例:
dockerfileFROM vsiri/recipe:vsi as vsi FROM debian:9 RUN apt-get update; apt-get install -y vim # 示例命令 COPY --from=vsi /vsi /vsi
| 名称 | tini |
|---|---|
| 构建参数 | TINI_VERSION - 要下载的 tini 版本 |
| 输出目录 | /usr/local |
tini 是一个进程收割器,适用于会生成新进程的 Docker 容器。Alpine 版本为 tini-musl。
示例:
dockerfileFROM vsiri/recipe:tini as tini FROM debian:9 RUN apt-get update; apt-get install -y vim # 示例命令 COPY --from=tini /usr/local /usr/local
| 名称 | gosu |
|---|---|
| 构建参数 | GOSU_VERSION - 要下载的 gosu 版本 |
| 输出目录 | /usr/local |
为 Docker 自动化设计的 sudo 替代工具(无需密码)。
示例:
dockerfileFROM vsiri/recipe:gosu as gosu FROM debian:9 RUN apt-get update; apt-get install -y vim # 示例命令 COPY --from=gosu /usr/local /usr/local # 可选:添加 SUID 位,允许非特权用户以 root 身份运行(类似 sudo) RUN chmod u+s /usr/local/bin/gosu
| 名称 | ep |
|---|---|
| 构建参数 | EP_VERSION - 要下载的 ep 版本 |
| 输出目录 | /usr/local |
ep 是一种简单工具,可为不支持环境变量替换的应用配置文件提供 Bourne shell 风格的变量替换功能。
示例:
dockerfileFROM vsiri/recipe:ep as ep FROM debian:9 RUN apt-get update; apt-get install -y vim # 示例命令 COPY --from=ep /usr/local /usr/local
| 名称 | jq |
|---|---|
| 构建参数 | JQ_VERSION - 要下载的 jq 版本 |
| 输出目录 | /usr/local |
jq 是一款轻量级、灵活的命令行 JSON 处理器。
示例:
dockerfileFROM vsiri/recipe:jq as jq FROM debian:9 RUN apt-get update; apt-get install -y vim # 示例命令 COPY --from=jq /usr/local /usr/local
| 名称 | ninja |
|---|---|
| 构建参数 | NINJA_VERSION - 要下载的 ninja 版本 |
| 输出目录 | /usr/local |
ninja 是 GNU Make 的高效替代工具,用于构建加速。
示例:
dockerfileFROM vsiri/recipe:ninja as ninja FROM debian:9 RUN apt-get update; apt-get install -y vim # 示例命令 COPY --from=ninja /usr/local /usr/local
| 名称 | Docker |
|---|---|
| 构建参数 | DOCKER_VERSION - 要下载的 Docker 版本 |
| 输出目录 | /usr/local(包含 docker 及其他文件) |
Docker 是用于运行容器应用的工具。
示例:
dockerfileFROM vsiri/recipe:docker as docker FROM debian:9 RUN apt-get update; apt-get install -y vim # 示例命令 COPY --from=docker /usr/local /usr/local
| 名称 | docker compose |
|---|---|
| 构建参数 | DOCKER_COMPOSE_VERSION - 要下载的 docker compose 版本 |
| 输出目录 | /usr/local |
用于简单 Docker 编排的工具,提供组织化方式运行一个或多个容器。
示例:
dockerfileFROM vsiri/recipe:docker-compose as docker-compose FROM debian:9 RUN apt-get update; apt-get install -y vim # 示例命令 COPY --from=docker-compose /usr/local /usr/local
注意:Docker Compose 2.0.0+ 版本支持 glibc 和 musl;1.x 版本需使用 Alpine 专用镜像:docker/compose:alpine-${DOCKER_COMPOSE_VERSION}。
Alpine 示例:
dockerfileARG DOCKER_COMPOSE_VERSION=1.26.2 FROM docker/compose:alpine-${DOCKER_COMPOSE_VERSION} as docker-compose FROM alpine:3.11 RUN apk add --no-cache git # 示例命令 COPY --from=docker-compose /usr/local /usr/local
| 名称 | git lfs |
|---|---|
| 构建参数 | GIT_LFS_VERSION - 要下载的 git-lfs 版本 |
| 输出目录 | /usr/local |
git-lfs 使 git 能够优雅处理大文件。
示例:
dockerfileFROM vsiri/recipe:git-lfs as git-lfs FROM debian:9 RUN apt-get update; apt-get install -y vim # 示例命令 COPY --from=git-lfs /usr/local /usr/local # 所有 recipes 通用补丁命令(只需运行一次) RUN shopt -s nullglob; for patch in /usr/local/share/just/container_build_patch/*; do "${patch}"; done
| 名称 | CMake |
|---|---|
| 构建参数 | CMAKE_VERSION - 要下载的 CMake 版本 |
| 输出目录 | /usr/local |
CMake 是跨平台工具集,用于构建、测试和打包软件。
示例:
dockerfileFROM vsiri/recipe:cmake as cmake FROM debian:9 RUN apt-get update; apt-get install -y vim # 示例命令 COPY --from=cmake /usr/local /usr/local
| 名称 | Pipenv |
|---|---|
| 环境变量 | PIPENV_VERSION - 要下载的 Pipenv 版本PIPENV_VIRTUALENV - Pipenv 虚拟环境位置PIPENV_PYTHON - 可选默认 Python 可执行文件路径 |
| 输出目录 | /usr/local |
Pipenv 是管理 Python 项目依赖(基于虚拟环境)的新方式。
由于虚拟环境的非可移植性,需在目标镜像中正确位置创建。可通过 PIPENV_VIRTUALENV 参数调整位置。默认 Python 版本可通过 PYTHON 构建参数或 pipenv 命令的 --python/--two/--three 标志指定。
示例:
dockerfileFROM vsiri/recipe:pipenv as pipenv FROM debian:9 RUN apt-get update; apt-get install -y vim # 示例命令 COPY --from=pipenv /usr/local /usr/local # 所有 recipes 通用补丁命令(只需运行一次) RUN shopt -s nullglob; for patch in /usr/local/share/just/container_build_patch/*; do "${patch}"; done
| 名称 | Rocky Linux Repos |
|---|---|
| 输出目录 | /usr/local |
Rocky Linux 是 RHEL 的免费替代版,此 recipe 用于向 UBI 镜像添加 Rocky 软件源。
示例:
dockerfileFROM vsiri/recipe:rocky as rocky FROM redhat/ubi8 COPY --from=rocky /usr/local /usr/local # 所有 recipes 通用补丁命令(只需运行一次) RUN shopt -s nullglob; for patch in /usr/local/share/just/container_build_patch/*; do "${patch}"; done RUN dnf install -y --enablerepo=rocky-appstream telnet # 示例命令
| 名称 | CUDA |
|---|---|
| 特殊参数 | CUDA_REPO_REF - CUDA 容器仓库的引用(通过环境变量 DOCKER_RECIPE_CUDA_REPO_REF 设置,默认:81682547e12c8807ebc5fa61ff4576510925a324) |
| 构建参数 | CUDA_VERSION - 要安装的 CUDA 版本(如 10.2 或 11.0.7)CUDNN_VERSION - 可选,要安装的 cuDNN 版本(如 7 或 8)CUDA_RECIPE_TARGET - 可选,指定安装的 CUDA 组件(runtime/devel/devel-only,默认:runtime) |
| 环境变量 | NVIDIA_VISIBLE_DEVICES - 必需,设置可见的 NVIDIA 设备(如 all)NVIDIA_DRIVER_CAPABILITIES - 可选,设备功能(默认:compute,utility)NVIDIA_REQUIRE_* - 可选,系统兼容性约束 |
| 输出目录 | /usr/local |
| 最低 Dockerfile 前端 | docker/dockerfile:1.3-labs 或 docker/dockerfile:1.4 |
当需基于特定镜像(如加固镜像)添加 CUDA 支持时,此 recipe 可自动完成配置步骤(设置仓库、安装包、配置环境变量等)。目前支持 RHEL 和 Ubuntu 基础镜像。
CUDA_RECIPE_TARGET 说明:
runtime:仅安装运行时包devel:安装运行时和开发包devel-only:仅安装开发包(需已安装运行时)环境变量说明:
需在容器创建时设置 nvidia 运行时所需变量,可通过 Dockerfile 的 ENV、docker-compose.yml 的 environment 或 docker run -e 实现。NVIDIA_VISIBLE_DEVICES 为必需项,建议设为 all。
示例:
dockerfile# syntax=docker/dockerfile:1.4 FROM vsiri/recipe:cuda as cuda FROM redhat/ubi8 COPY --from=cuda /usr/local /usr/local # 所有 recipes 通用补丁命令(只需运行一次) RUN shopt -s nullglob; for patch in /usr/local/share/just/container_build_patch/*; do "${patch}"; done # 必需环境变量 ENV NVIDIA_VISIBLE_DEVICES=all # 可选环境变量(默认值为 compute,utility) ENV NVIDIA_DRIVER_CAPABILITIES=compute,utility # 构建源码时加载 CUDA 环境变量 RUN source /usr/local/share/just/user_run_patch/10_load_cuda_env; \ cmake . # 示例命令
| 名称 | CUDA GL |
|---|---|
| 构建参数 | CUDA_RECIPE_TARGET - 指定安装的 CUDA 组件(同 CUDA recipe,默认:runtime)LIBGLVND_VERSION - GLVND 版本(默认:v1.7.0) |
| 环境变量 | NVIDIA_DRIVER_CAPABILITIES - 需包含 graphics(如 graphics,compute,utility) |
| 输出目录 | /usr/local |
| 最低 Dockerfile 前端 | docker/dockerfile:1.3-labs 或 docker/dockerfile:1.4 |
扩展 CUDA recipe,添加 OpenGL 支持。CUDA_RECIPE_TARGET=devel-only 会同时安装运行时和开发包。
示例:
dockerfile# syntax=docker/dockerfile:1.4 FROM vsiri/recipe:cudagl as cudagl FROM redhat/ubi8 COPY --from=cudagl /usr/local /usr/local # 所有 recipes 通用补丁命令(只需运行一次) RUN shopt -s nullglob; for patch in /usr/local/share/just/container_build_patch/*; do "${patch}"; done ENV NVIDIA_DRIVER_CAPABILITIES=graphics,compute,utility
| 名称 | Amanda |
|---|---|
| 构建参数 | AMANDA_VERSION - 要构建的分支名称(可为 SHA) |
| 输出文件 | /amanda-backup-client_${AMANDA_VERSION}-1Debian82_amd64.deb/amanda-backup-server_${AMANDA_VERSION}-1Debian82_amd64.deb |
用于构建 Amanda 磁带备份软件的 Debian 包。
| 名称 | One True Awk |
|---|---|
| 构建参数 | ONETRUEAWK_VERSION - 要下载的 one true awk 版本 |
| 输出目录 | /usr/local |
One True Awk 是简化版 awk,用于测试兼容性。
示例:
dockerfileFROM vsiri/recipe:onetrueawk as onetrueawk FROM debian:9 RUN apt-get update; apt-get install -y vim # 示例命令 COPY --from=onetrueawk /usr/local /usr/local
| 名称 | Python |
|---|---|
| 构建参数 | USE_MINICONDA - 设为 1 时使用 miniconda 而非 miniforgePYTHON_VERSION - 要下载的 Python 版本PYTHON_INSTALL_DIR - Python 安装路径(需保持绝对路径不变) |
| 输出目录 | /usr/local |
通过 miniforge(或 miniconda)安装独立 Python 环境,适用于在任意 Linux 发行版上安装指定 Python 版本。
示例:
dockerfileFROM vsiri/recipe:conda-python as python FROM ubuntu:16.04 RUN apt-get update; apt-get install -y vim # 示例命令 COPY --from=python /usr/local /usr/local
| 名称 | PROJ-data |
|---|---|
| 构建参数 | PROJ_DATA_VERSION - 要下载的 proj-data 版本 |
| 输出目录 | /usr/local |
安装 [PROJ-data]([***]
来自真实用户的反馈,见证轩辕镜像的优质服务
免费版仅支持 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 登录认证访问私有仓库
在 Linux 系统配置镜像加速服务
在 Docker Desktop 配置镜像加速
Docker Compose 项目配置加速
Kubernetes 集群配置 Containerd
在宝塔面板一键配置镜像加速
Synology 群晖 NAS 配置加速
飞牛 fnOS 系统配置镜像加速
极空间 NAS 系统配置加速服务
爱快 iKuai 路由系统配置加速
绿联 NAS 系统配置镜像加速
QNAP 威联通 NAS 配置加速
Podman 容器引擎配置加速
HPC 科学计算容器配置加速
ghcr、Quay、nvcr 等镜像仓库
无需登录使用专属域名加速
需要其他帮助?请查看我们的 常见问题 或 官方QQ群: 13763429