You need to enable JavaScript to run this app. 如何在Docker容器中通过conda安装CUDA版PyTorch并确保可调用CUDA
优惠活动
大模型
产品
解决方案
定价
更多

如何在Docker容器中通过conda安装CUDA版PyTorch并确保可调用CUDA

根因梳理
  • 构建报错根因:已通过SHELL指令指定所有RUN命令默认使用conda run -n camera-seg激活虚拟环境,非交互shell未加载conda的bash初始化配置,重复执行conda activate会触发命令未配置的报错。
  • 安装后CUDA不可用根因:
    • requirements.yaml未添加PyTorch官方源,conda默认源会自动安装CPU版本的PyTorch,无CUDA加速能力。
    • 容器运行时未挂载宿主机GPU设备,容器内无法感知宿主机的NVIDIA驱动与GPU硬件。
修正方案

1. 修正后的Dockerfile

# Use nvidia/cuda image
FROM nvidia/cuda:10.2-cudnn7-devel-ubuntu18.04
# set bash as current shell
RUN chsh -s /bin/bash
# install anaconda
RUN apt-get update
RUN apt-get install -y wget bzip2 ca-certificates libglib2.0-0 libxext6 libsm6 libxrender1 git mercurial subversion && \
        apt-get clean
RUN wget --quiet https://repo.anaconda.com/archive/Anaconda3-2020.02-Linux-x86_64.sh -O ~/anaconda.sh && \
        /bin/bash ~/anaconda.sh -b -p /opt/conda && \
        rm ~/anaconda.sh && \
        ln -s /opt/conda/etc/profile.d/conda.sh /etc/profile.d/conda.sh && \
        echo ". /opt/conda/etc/profile.d/conda.sh" >> ~/.bashrc && \
        find /opt/conda/ -follow -type f -name '*.a' -delete && \
        find /opt/conda/ -follow -type f -name '*.js.map' -delete && \
        /opt/conda/bin/conda clean -afy
# set path to conda
ENV PATH /opt/conda/bin:$PATH

# setup conda virtual environment
COPY ./requirements.yaml /tmp/requirements.yaml
RUN conda update conda \
    && conda env create --name camera-seg -f /tmp/requirements.yaml \
    && conda install -y -c conda-forge -n camera-seg flake8

# Make RUN commands use the new environment
SHELL ["conda", "run", "-n", "camera-seg", "/bin/bash", "-c"]

# PyTorch with CUDA 10.2
RUN conda install pytorch torchvision cudatoolkit=10.2 -c pytorch

RUN echo "conda activate camera-seg" > ~/.bashrc
ENV PATH /opt/conda/envs/camera-seg/bin:$PATH

核心修改点:移除RUN命令中冗余的conda activate camera-seg前缀,SHELL指令已自动完成环境激活,无需重复操作。

2. 若需将PyTorch写入requirements.yaml的修正配置

name: camera-seg
channels:
  - defaults
  - conda-forge
  - pytorch
dependencies:
  - python=3.6
  - numpy
  - pillow
  - yaml
  - pyyaml
  - matplotlib
  - jupyter
  - notebook
  - tensorboardx
  - tensorboard
  - protobuf
  - tqdm
  - pytorch
  - torchvision
  - cudatoolkit=10.2

注意:必须添加pytorch通道,否则conda会从默认源拉取无CUDA支持的CPU版PyTorch。

3. 容器运行时的必填配置

构建完成后,运行容器时必须添加GPU挂载参数,否则容器内无法访问宿主机GPU:

docker run --gpus all -it camera-seg /bin/bash

提示:若使用旧版nvidia-docker,替换为nvidia-docker run -it camera-seg /bin/bash即可。

验证方法

进入容器后执行以下命令,返回True即为配置成功:

python -c "import torch; print(torch.cuda.is_available())"

内容的提问来源于stack exchange,提问作者Rahul Bohare

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.11.11 03:06:00