【Docker】基于Dockerfile创建携带最新cuda版本以及与其配套的cudnn环境的ubuntu20.04镜像

基于Dockerfile创建携带最新cuda版本以及与其配套的cudnn环境的ubuntu20.04镜像

最近涉及到一个在 x86 上机器上使用英伟达GPU资源做加速计算的项目,包括模型推理加速和编解码加速。
为了保持两个模块开发cuda环境的一致性,故构建该基础镜像。

编写Dockerfile脚本

# Use Ubuntu 20.04 as base image
FROM ubuntu:20.04

# Set non-interactive mode for apt-get
ENV DEBIAN_FRONTEND=noninteractive

# Update package lists and install basic dependencies
RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list && \
    apt-get update && apt-get install -y --no-install-recommends \
    build-essential \
    wget \
    curl \
    vim \
    gnupg2 \
    lsb-release \
    ca-certificates \
    && rm -rf /var/lib/apt/lists/*

# Install CUDA
# Add NVIDIA package repositories and keys
RUN sed -i 's|http://archive.ubuntu.com/ubuntu/|http://mirrors.aliyun.com/ubuntu/|g' /etc/apt/sources.list && \
    apt-get update && \
    wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/cuda-keyring_1.0-1_all.deb && \
    dpkg -i cuda-keyring_1.0-1_all.deb && \
    apt-get update && \
    apt-get install -y cuda \
    --fix-missing

# Set environment variables for CUDA
ENV PATH=/usr/local/cuda/bin:${PATH}
ENV LD_LIBRARY_PATH=/usr/local/cuda/lib64:${LD_LIBRARY_PATH}

# Clean up apt cache
RUN apt-get clean && rm -rf /var/lib/apt/lists/*

# Set default command
CMD ["bash"]

构建镜像

我要在x86平台使用,因此在构建时指定platform=linux/amd64参数

docker build --platform=linux/amd64 -t ubuntu-cuda:20.04 .

等待镜像构建完成即可,时间可能稍长。
注意:更换ubuntu使用的镜像源可大大提高构建成功率。(本Dockerfile 已经加入更换阿里源的操作)
另外--fix-missing 参数也不可少,它可以再次下载那些因网络波动而未能成功下载的包。

环境验证

运行 Docker 容器

docker run --rm --gpus all -it ubuntu-cuda:20.04 bash

使用nvcc --version 可以查看到cuda的版本;
如果宿主机安装了英伟达驱动的话,在容器中执行nvidia-smi 是可以看到GPU详细信息的。



2024.11.07补充:
大意了,做了无用功,官方docker hub有好多现成的镜像,想用哪个,直接根据不同的tag拉取就好,根本不用自己构建。
官方链接:跳转nvidia/cuda镜像仓库

<think>好的,用户想要下载NVIDIA CUDA 11.6.0 cuDNN 8开发版的Ubuntu 20.04 Docker镜像,具体是nvcr.io/nvidia/cuda:11.6.0-cudnn8-devel-ubuntu20.04。我需要根据提供的引用内容来解答这个问题。 首先,根据引用[1],用户已经给出了正确的拉取命令:docker pull nvcr.io/nvidia/cuda:11.6.0-cudnn8-devel-ubuntu20.04。这应该是最直接的解决方法。同时,引用[2]中列出的镜像版本也确认了该镜像的存在,说明这个镜像确实在NVIDIA的仓库中可用。 接下来,用户可能需要知道是否需要登录或者获取API密钥。根据引用[3],如果需要从NVIDIA NGC获取镜像,可能需要注册并获取API密钥。但根据引用[1]中的命令,使用的是nvcr.io的地址,而nvcr.io是NVIDIA的容器注册表,通常需要登录。但根据经验,部分公共镜像可能不需要登录,但开发版本的可能需要。因此,用户可能需要先执行docker login nvcr.io,然后输入用户名和密码(通常是$oauthtoken和API密钥)。不过,在引用[1]中用户直接给出了拉取命令,可能说明该镜像在公共仓库中可用,或者用户已经配置了认证。需要提醒用户可能需要登录,引用[3]的内容可以作为补充说明。 另外,用户可能遇到的问题包括镜像拉取失败,这时候可能需要检查网络或者认证。如果用户之前安装过其他版本CUDA,可能需要清理旧版本,如引用[4]中提到的卸载残留文件,但这里主要涉及Docker镜像,可能不需要处理宿主机上的文件,但如果有冲突的容器存在,可能需要删除旧容器镜像。 总结步骤应该是:1. 登录NVIDIA NGC(如果需要);2. 执行拉取命令;3. 验证镜像是否正确下载。同时,提供可能需要的额外信息,如镜像的用途(开发版包含编译工具,适合需要编译CUDA应用的场景)。 相关问题部分需要考虑用户可能遇到的后续问题,例如如何运行镜像、不同版本的区别、如何配置开发环境,或者遇到认证问题时的解决方法。需要确保问题覆盖用户可能的下一个步骤或常见问题。</think>### 分步说明 要下载 NVIDIA CUDA 11.6.0 cuDNN 8 开发版的 Ubuntu 20.04 Docker 镜像,按以下步骤操作: 1. **登录 NVIDIA NGC 容器注册表** 如果首次使用 NVIDIA NGC 镜像,需注册账号并获取 API 密钥[^3]。登录命令为: ```bash docker login nvcr.io ``` 输入用户名:`$oauthtoken`,密码:你的 NGC API 密钥。 2. **拉取镜像** 直接执行拉取命令(镜像名称已通过引用[1][^1]和引用[2][^2]验证): ```bash docker pull nvcr.io/nvidia/cuda:11.6.0-cudnn8-devel-ubuntu20.04 ``` - `11.6.0-cudnn8-devel-ubuntu20.04` 表示 CUDA 11.6.0 + cuDNN 8 开发环境(含编译工具链) 3. **验证镜像** 检查已下载的镜像列表: ```bash docker images | grep cuda ``` 若输出包含 `11.6.0-cudnn8-devel-ubuntu20.04` 则表示成功。 ### 注意事项 - **镜像用途**:`devel` 版本包含完整的 CUDA 工具链(如 `nvcc` 编译器),适用于开发和编译 CUDA 程序;若仅需运行环境,可选择 `runtime` 版本[^2]。 - **网络问题**:若拉取失败,尝试配置 Docker 镜像加速或使用代理。 - **旧版本残留**:若宿主机存在 CUDA 版本冲突,需按引用[4][^4]清理残留文件,但 Docker 容器与宿主机环境隔离,一般无需额外操作。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值