[docker入门教程系列] 使用dockerfile创建cuda:11.0-cudnn8-devel-ubuntu18.04镜像

本文介绍如何在Dockerfile中配置基于nvidia/cuda:11.0-cudnn8-devel-ubuntu18.04的基础镜像,并更换apt源为清华大学镜像站。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

在dockerfile中这样写:

FROM nvidia/cuda:11.0-cudnn8-devel-ubuntu18.04
RUN mv /etc/apt/sources.list /etc/apt/sources.list.bak
RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic main restricted universe multiverse" >> /etc/apt/sources.list
RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-updates main restricted universe multiverse" >>/etc/apt/sources.list
RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-backports main restricted universe multiverse" >>/etc/apt/sources.list
RUN echo "deb http://mirrors.tuna.tsinghua.edu.cn/ubuntu/ bionic-security main restricted universe multiverse" >>/etc/apt/sources.list
RUN gpg --keyserver keyserver.ubuntu.com --recv A4B469963BF863CC 
RUN gpg --export --armor A4B469963BF863CC | apt-key add -

上面的步骤干了两件事:

  1. 从docker官方拉取镜像FROM nvidia/cuda:11.0-cudnn8-devel-ubuntu18.04
  2. 修改apt源为清华源
<think>我们已知宿主机CUDA版本为11.0,需要确保Ollama容器使用相同的CUDA版本以避免兼容性问题。 关键点: 1. 选择与宿主机CUDA版本匹配的基础镜像 2. 确保容器内的CUDA工具包版本为11.0 3. 验证Ollama在容器内运行时使用的是正确的CUDA版本 步骤: 1. 确定宿主机CUDA版本:11.0 2.Dockerfile使用对应版本的CUDA基础镜像(例如:nvidia/cuda:11.0.3-devel-ubuntu18.04) 注意:镜像标签中的版本号要匹配,同时选择合适的基础操作系统(如Ubuntu 18.04或20.04) 3. 安装Ollama 4. 设置环境变量,确保CUDA路径正确 5. 构建并运行容器,验证CUDA版本 具体操作: 步骤1:编写Dockerfile 由于宿主机CUDA版本为11.0,我们选择NVIDIA官方提供的CUDA 11.0镜像。注意,我们选择devel版本,因为它包含开发工具(如nvcc)和运行时。 示例Dockerfile: ```dockerfile # 使用CUDA 11.0的基础镜像(这里以Ubuntu 18.04为例,因为CUDA 11.0支持Ubuntu 18.04) FROM nvidia/cuda:11.0.3-devel-ubuntu18.04 # 安装必要的依赖(包括curl等) RUN apt-get update && \ apt-get install -y curl && \ rm -rf /var/lib/apt/lists/* # 安装Ollama RUN curl -fsSL https://ollama.com/install.sh | sh # 设置环境变量(虽然基础镜像已经设置,但为了明确,可以再次设置) ENV PATH=/usr/local/cuda-11.0/bin${PATH:+:${PATH}} ENV LD_LIBRARY_PATH=/usr/local/cuda-11.0/lib64${LD_LIBRARY_PATH:+:${LD_LIBRARY_PATH}} # 验证安装 RUN nvcc --version && ollama --version ``` 步骤2:构建镜像 ```bash docker build -t ollama-cuda11 . ``` 步骤3:运行容器(启用GPU) ```bash docker run -it --rm --gpus all -p 11434:11434 ollama-cuda11 ``` 验证容器内CUDA版本: 进入容器后,执行以下命令: ```bash nvcc --version ``` 应该输出类似: ``` nvcc: NVIDIA (R) Cuda compiler driver Copyright (c) 2005-2020 NVIDIA Corporation Built on Thu_Jul_23_19:41:42_PDT_2020 Cuda compilation tools, release 11.0, V11.0.194 Build cuda_11.0_bu.TC445_37.28540450_0 ``` 同时,运行Ollama模型时,可以通过日志查看是否使用了GPU加速。 注意事项: 1. 宿主机需要安装与CUDA 11.0兼容的NVIDIA驱动(通过`nvidia-smi`查看,要求驱动版本>=450.80.02) 2. 如果宿主机驱动版本过低,需要升级驱动以支持CUDA 11.0 3. 如果使用其他操作系统基础镜像,请确保选择与CUDA 11.0兼容的版本(如Ubuntu 18.04) 问题排查: 1. 如果容器内无法识别GPU,检查宿主机驱动和容器运行时环境(确保已安装nvidia-container-toolkit) 2. 如果CUDA版本不匹配,检查Dockerfile中基础镜像的标签是否正确 引用: 关于CUDA版本和驱动版本的兼容性,可参考NVIDIA官方文档[^1]。 相关问题: 1. 如何查看宿主机NVIDIA驱动支持的CUDA版本? 2. 如何在多个CUDA版本共存的宿主机上指定容器使用的版本? 3. Ollama模型在GPU加速下的性能指标有哪些?</think># 在宿主机CUDA 11.0环境下配置Ollama容器 要在宿主机CUDA 11.0环境下正确配置Ollama容器,需要确保容器内的CUDA版本与宿主机完全兼容。以下是详细步骤: ## 解决方案步骤 ### 1. 确认宿主机环境 ```bash # 查看宿主机CUDA版本 nvcc --version # 输出应包含:release 11.0 # 查看NVIDIA驱动版本 nvidia-smi # 输出顶部显示驱动版本,需兼容CUDA 11.0 ``` ### 2. 创建匹配的Dockerfile ```dockerfile # 使用与宿主机匹配的CUDA 11.0基础镜像 FROM nvidia/cuda:11.0.3-devel-ubuntu18.04 # 安装Ollama依赖 RUN apt-get update && \ apt-get install -y curl software-properties-common && \ rm -rf /var/lib/apt/lists/* # 安装Ollama RUN curl -fsSL https://ollama.com/install.sh | sh # 显式设置CUDA路径(重要!) ENV PATH="/usr/local/cuda-11.0/bin:${PATH}" ENV LD_LIBRARY_PATH="/usr/local/cuda-11.0/lib64:${LD_LIBRARY_PATH}" # 验证安装 RUN nvcc --version && ollama --version ``` ### 3. 构建和运行容器 ```bash # 构建镜像 docker build -t ollama-cuda11.0 . # 运行容器(启用GPU) docker run -it --rm \ --gpus all \ -p 11434:11434 \ ollama-cuda11.0 ``` ## 关键配置说明 1. **基础镜像选择**: - 必须使用`nvidia/cuda:11.0.3-devel-ubuntu18.04`确保CUDA版本匹配 - 标签中的`devel`表示包含开发工具包,这对Ollama运行是必需的 2. **环境变量显式设置**: ```dockerfile ENV PATH="/usr/local/cuda-11.0/bin:${PATH}" ENV LD_LIBRARY_PATH="/usr/local/cuda-11.0/lib64:${LD_LIBRARY_PATH}" ``` - 显式指定CUDA 11.0路径,避免容器内默认路径指向其他版本 3. **GPU兼容性检查**: - 宿主机驱动版本需≥450.80.02(CUDA 11.0最低要求) - 使用`nvidia-smi`确认驱动兼容性 ## 验证配置 在容器内执行: ```bash # 检查CUDA版本 nvcc --version # 应输出:Cuda compilation tools, release 11.0 # 检查Ollama是否识别GPU ollama run llama2 # 查看日志中是否有"GPU acceleration enabled"信息 # 检查GPU设备访问 nvidia-smi # 应显示容器内的GPU使用情况 ``` ## 常见问题解决 1. **版本不匹配错误**: - 错误信息:`CUDA driver version is insufficient for CUDA runtime version` - 解决方案:升级宿主机NVIDIA驱动至兼容CUDA 11.0的版本 2. **库路径冲突**: ```bash # 在容器内检查链接 ldd $(which ollama) | grep cuda # 确保所有cuda库指向11.0版本 ``` 3. **备选运行方式**(当基础镜像不兼容时): ```bash docker run -it --rm \ --gpus all \ -v /usr/local/cuda-11.0:/usr/local/cuda \ -p 11434:11434 \ ubuntu:20.04 \ bash -c "curl -fsSL https://ollama.com/install.sh | sh && ollama run llama2" ``` - 通过卷挂载直接使用宿主机的CUDA 11.0安装 > 注意:Ollama官方从v0.1.23开始支持CUDA加速,请确保使用最新版本[^1]。 ## 性能优化建议 - 设置环境变量启用完整GPU加速: ```bash export OLLAMA_GPU_LAYERS=100 # 使用更多GPU层 ``` - 监控GPU使用: ```bash watch -n 1 nvidia-smi ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值