本站支持搜索的镜像仓库:Docker Hub、gcr.io、ghcr.io、quay.io、k8s.gcr.io、registry.gcr.io、elastic.co、mcr.microsoft.com

FedoraCoreOS (FCOS) 是基于Fedora的自更新最小容器优化Linux发行版。
NVIDIA尚未直接支持FCOS,因此通过分叉的GitLab项目此处生成Fedora内核特定的容器镜像。
由于这些镜像基于跟踪next/development/stable流的FedoraCoreOS gitlab-runner构建,我们使用nvidia-driver update功能包含预编译内核模块,以加速驱动启动。
镜像首先以预发布形式推送到内置的GitLab Docker仓库,经安全扫描和验证后推送到Dockerhub此处。
作为特权“驱动容器”运行时,它们会安装/运行NVIDIA内核模块。
整体架构概述参见此处。
支持基于Pascal+架构的NVIDIA数据中心GPU(如P100、V100、T4、A100)在x86 FCOS上运行。
NVIDIA数据中心驱动支持特定CUDA版本,并具有最低支持的Linux内核约束。
当前构建的驱动版本在ci/fedora/.common-ci-fcos.yml中指定。
驱动容器需要特权模式,以下示例使用podman(docker同样适用)启动。
# [***] $ sudo rpm-ostree kargs --append=rd.driver.blacklist=nouveau,nova_core --append=modprobe.blacklist=nouveau,nova_core $ DRIVER_VERSION=580.65.06 # 查看ci/fedora/.common-ci-fcos.yml获取最新驱动版本 $ FEDORA_VERSION_ID=$(cat /etc/os-release | grep VERSION_ID | cut -d = -f2) $ podman run -d --privileged --pid=host \ -v /run/nvidia:/run/nvidia:shared \ -v /var/log:/var/log \ --name nvidia-driver \ registry.gitlab.com/container-toolkit-fcos/driver:${DRIVER_VERSION}-fedora${FEDORA_VERSION_ID}
或在FCOS上通过ignition配置片段注册为systemd单元。此单元尝试拉取与运行内核版本匹配的驱动镜像(含预编译内核头文件),若不存在则回退到通用Fedora版本,并挂载主机目录中的补丁文件(如有)。
variant: fcos version: 1.5.0 kernel_arguments: should_exist: # [***] - rd.driver.blacklist=nouveau,nova_core - modprobe.blacklist=nouveau,nova_core systemd: units: - name: acme-nvidia-driver.service enabled: true contents: | [Unit] Requires=network-online.target After=network-online.target StartLimitInterval=1600 StartLimitBurst=5 [Service] TimeoutStartSec=250 ExecStartPre=-/bin/podman stop nvidia-driver ExecStartPre=-/bin/podman rm nvidia-driver ExecStartPre=-setenforce 0 ExecStartPre=-/bin/mkdir -p /run/nvidia # 5/17/24 - 若无以下行,nvidia驱动容器将崩溃且无有效错误信息 ExecStartPre=-/usr/sbin/modprobe video # 若存在内核特定镜像(含预编译内核头文件)则使用,否则回退到通用Fedora镜像并挂载补丁 # 将registry.gitlab.com/container-toolkit-fcos/driver替换为您构建/发布的驱动镜像仓库,如docker.io/fifofonix/driver ExecStart=/bin/sh -c ' \ FEDORA_VERSION_ID=$(cat /etc/os-release | grep VERSION_ID | cut -d = -f2); \ KERNEL_VERSION=$(/bin/uname -r); \ if /bin/podman manifest inspect registry.gitlab.com/container-toolkit-fcos/driver:580.65.06-${KERNEL_VERSION}-fedora${FEDORA_VERSION_ID} > /dev/null; then \ IMAGE_NAME=registry.gitlab.com/container-toolkit-fcos/driver:580.65.06-${KERNEL_VERSION}-fedora${FEDORA_VERSION_ID; \ else \ IMAGE_NAME=registry.gitlab.com/container-toolkit-fcos/driver:580.65.06-fedora${FEDORA_VERSION_ID}; \ PATCH_MOUNT="-v /var/acme/nvidia-driver-patch:/patch" fi; \ /bin/podman pull ${IMAGE_NAME}; \ /bin/podman run --name nvidia-driver \ -v /run/nvidia:/run/nvidia:shared \ -v /var/log:/var/log \ ${PATCH_MOUNT} \ --privileged \ --pid host \ ${IMAGE_NAME} \ --accept-license' ExecStop=/bin/podman stop nvidia-driver Restart=on-failure RestartSec=300 [Install] WantedBy=multi-user.target
可进入驱动容器运行nvidia-smi工具验证GPU是否被识别及CUDA版本。
$ # 假设通过podman运行驱动容器并命名为nvidia-driver... $ podman exec -it nvidia-driver sh sh-5.2# nvidia-smi Mon Sep 1 11:18:42 2025 +-----------------------------------------------------------------------------------------+ | NVIDIA-SMI 580.65.06 Driver Version: 580.65.06 CUDA Version: 13.0 | +-----------------------------------------+------------------------+----------------------+ | GPU Name Persistence-M | Bus-Id Disp.A | Volatile Uncorr. ECC | | Fan Temp Perf Pwr:Usage/Cap | Memory-Usage | GPU-Util Compute M. | | | | MIG M. | |=========================================+========================+======================| | 0 Tesla T4 Off | 00000000:00:1E.0 Off | 0 | | N/A 35C P0 26W / 70W | 0MiB / 15360MiB | 0% Default | | | | N/A | +-----------------------------------------+------------------------+----------------------+ +-----------------------------------------------------------------------------------------+ | Processes: | | GPU GI CI PID Type Process name GPU Memory | | ID ID Usage | |=========================================================================================| | No running processes found | +-----------------------------------------------------------------------------------------+
要运行利用已启动的NVIDIA驱动容器的CUDA容器,需安装独立的NVIDIA容器运行时并注册到容器运行时系统(如docker),遵循NVIDIA的安装指南。
在FedoraCoreOS上,可通过rpm-ostree分层安装容器工具包并配置运行时,以下是ignition配置片段示例(以containerd为例,docker同样适用):
variant: fcos version: 1.5.0 storage: files: - path: /etc/nvidia-container-runtime/config.toml mode: 0644 contents: inline: | [nvidia-container-cli] #debug = "/var/log/nvidia-container-toolkit.log" root = "/run/nvidia/driver" path = "/usr/bin/nvidia-container-cli" # NVIDIA容器工具包1.15.0的改进似乎尚未完全支持FCOS,因此仍需显式添加驱动路径到ld.so.conf - path: /etc/ld.so.conf.d/container-toolkit.conf mode: 0644 contents: inline: | /run/nvidia/driver/usr/lib64 systemd: units: - name: acme-layer-nvidia-container-toolkit.service enabled: true # 在zincati.service前运行,避免rpm-ostree事务冲突 contents: | [Unit] Wants=network-online.target After=network-online.target Before=zincati.service ConditionPathExists=!/var/lib/%N.stamp StartLimitInterval=350 StartLimitBurst=5 [Service] Type=oneshot RemainAfterExit=yes ExecStartPre=-/bin/rm -rf /var/cache/rpm-ostree/repomd/{libnvidia,nvidia}* ExecStartPre=-/bin/sh -c 'curl -s -L [***] \ > /etc/yum.repos.d/nvidia-container-toolkit.repo' # 可根据需求固定rpm版本... ExecStart=/usr/bin/rpm-ostree install -y --idempotent --allow-inactive nvidia-container-toolkit ExecStart=/bin/sh -c 'if [[ -f /usr/bin/nvidia-ctk ]]; then \ /usr/bin/nvidia-ctk runtime configure --runtime=containerd --nvidia-set-as-default; \ systemctl restart containerd; \ /bin/touch /var/lib/%N.stamp; fi' ExecStart=/bin/systemctl --no-block reboot Restart=on-failure RestartSec=60 [Install] WantedBy=multi-user.target
最终可运行GPU工作负载,即使驱动容器通过podman运行,也可通过docker执行:
$ docker run --runtime=nvidia nvidia/samples:vectoradd-cuda11.2.1 [Vector addition of 50000 elements] Copy input data from the host memory to the CUDA device CUDA kernel launch with 196 blocks of 256 threads Copy output data from the CUDA device to the host memory Test PASSED Done
镜像中包含的软件许可信息参见git仓库。
与所有Docker镜像一样,其中可能包含其他软件,可能受其他许可协议约束(如基础发行版中的Bash等,以及主要软件的直接或间接依赖)。
对于任何预构建镜像的使用,镜像用户有责任确保对镜像中所有软件的使用符合相关许可协议。
免费版仅支持 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