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