You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在GitLab CI/CD中同时启用Docker-in-Docker与NVIDIA工具链

解决方案:在GitLab CI/CD中同时使用Docker命令与NVIDIA工具

核心问题分析

你遇到的Cannot connect to the Docker daemon错误,是因为你的nvidia/cuda镜像仅安装了Docker CLI,但没有连接到运行中的Docker daemon。要同时使用NVIDIA工具和Docker命令,需要将dind服务(提供Docker daemon)与NVIDIA-enabled的Runner/镜像结合起来。


方案一:使用预构建的组合镜像

直接使用同时包含NVIDIA CUDA工具和Docker CLI的镜像,或者自行构建:

自定义镜像Dockerfile示例

FROM nvidia/cuda:12.1.0-base-ubuntu20.04

# 安装Docker CLI
RUN apt-get update && apt-get install -y --no-install-recommends \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common && \
    curl -fsSL https://download.docker.com/linux/ubuntu/gpg | apt-key add - && \
    add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu focal stable" && \
    apt-get update && apt-get install -y --no-install-recommends docker-ce-cli && \
    rm -rf /var/lib/apt/lists/*

构建后推送到你的镜像仓库,即可在CI配置中直接使用该镜像。


方案二:直接组合现有场景(无需自定义镜像)

利用你已有的Runner配置(runtime = "nvidia"),在CI配置中引入dind服务并安装Docker CLI:

.gitlab-ci.yml 配置示例

services:
  - docker:20.10.17-dind

image: nvidia/cuda:12.1.0-base-ubuntu20.04

variables:
  DOCKER_HOST: tcp://docker:2375  # 指向dind服务的Docker daemon
  DOCKER_TLS_CERTDIR: ""  # 禁用TLS(内部CI环境可安全使用)

before_script:
  # 安装Docker CLI到nvidia镜像
  - apt-get update && apt-get install -y --no-install-recommends docker-ce-cli

build_with_nvidia_and_docker:
  script:
    - nvidia-smi  # 验证NVIDIA工具正常
    - docker info  # 验证Docker CLI连接成功
    # 执行你的镜像构建命令

关键说明

  • services中的docker:dind提供了独立的Docker daemon,供你的job容器中的Docker CLI调用。
  • DOCKER_HOST变量告诉Docker CLI连接到dind服务的daemon,而非本地的unix socket。
  • 你的Runner已配置runtime = "nvidia",确保job容器能访问NVIDIA设备。

内容的提问来源于stack exchange,提问作者Kevin Vasko

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.07 13:05:31