当前位置: 首页 > news >正文

【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详细信息的。


http://www.mrgr.cn/news/33846.html

相关文章:

  • 三端全隔离压接端子485中继器磁耦隔离数据双向透传工业级2口信号放大器抗干扰防雷
  • Linux内核启动之根文件系统挂载
  • Codeforces Round 972 (Div. 2) E2. Subtangle Game (Hard Version)(博弈+双指针 sg函数思想)
  • 一文 学透 力扣—N数之和
  • hql杂谈一
  • Delphi 12.2 新增的 WebStencils 尝鲜
  • 【变化检测】基于Superpoint+Lightglue+TinyCD建筑物(LEVIR-CD)变化检测实战及ONNX推理
  • AtCoder Regular Contest 156 C. Tree and LCS(思维题 构造 数学归纳法)
  • Java 入门基础篇08 - Java的变量与数据类型的认识
  • 解决RabbitMQ设置x-max-length队列最大长度后不进入死信队列
  • 机器学习查漏补缺(5)
  • 2024年中国科技核心期刊目录(自然科学卷)科技统计源核心(续)
  • MySQL FLOAT 不准问题解析
  • nginx网站服务
  • iOS V2签名网站系统源码,开源免授权(含视频教程)
  • GNU编译器(GCC):编译的4个过程及.elf、.list、.map文件功能说明
  • 【Android】BottomSheet基本用法总结(BottomSheetDialog,BottomSheetDialogFragment)
  • 聚簇索引和非聚簇索引的定义和区别
  • Codeforces Round 974 (Div. 3) G. Milky Days
  • 布草洗涤-酒店分楼层统计报表--———未来之窗行业应用跨平台架构