基于Amazon Linux 2的Lambda容器安装CUDA:镜像选择与工具问题
问题
尝试在容器中安装CUDA,但由于public.ecr.aws/lambda/python:3.8镜像未包含wget,执行apt-get命令时出现错误:/bin/sh: apt-get: command not found。
Dockerfile内容如下:
# 拉取包含Python 3.8的Lambda基础镜像 FROM public.ecr.aws/lambda/python:3.8 # 将之前创建的requirements.txt文件复制到容器中 COPY requirements.txt ./ # 从requirements.txt安装Python依赖 RUN python3.8 -m pip install -r requirements.txt # 创建用于挂载EFS的模型目录 RUN mkdir -p /mnt/ml # 安装CUDA RUN apt-get install wget RUN wget https://developer.download.nvidia.com/compute/cuda/repos/ubuntu2004/x86_64/libcudnn8_8.1.0.77-1+cuda11.2_amd64.deb RUN dpkg -i libcudnn8_8.1.0.77-1+cuda11.2_amd64.deb # 将之前创建的app.py文件复制到容器中 COPY app.py ./ COPY maskrcnn/ ./maskrcnn # 设置CMD为处理函数 CMD ["app.lambda_handler"]
当前使用Amazon Linux 2作为服务器,请问是否需要更换镜像才能在Docker中安装CUDA?如果需要,哪种镜像最为合适?
解决方案
必须更换基础镜像:
public.ecr.aws/lambda/python:3.8基于Amazon Linux 2构建,使用yum包管理器而非apt-get,且Lambda基础镜像做了大量精简,无法直接适配CUDA这类复杂依赖的安装。推荐的镜像选择:
- NVIDIA官方CUDA镜像 + 手动配置Lambda运行时:
选用与目标CUDA、cuDNN版本匹配的NVIDIA官方 runtime 镜像,比如nvidia/cuda:11.2.2-cudnn8-runtime-ubuntu20.04(对应你要安装的CUDA 11.2和cuDNN 8.1),再手动安装Python 3.8及Lambda运行时依赖。这种方式能保证CUDA环境的兼容性,同时灵活适配Lambda需求。
示例Dockerfile片段:FROM nvidia/cuda:11.2.2-cudnn8-runtime-ubuntu20.04 # 更新包列表并安装Python 3.8 RUN apt-get update && apt-get install -y --no-install-recommends python3.8 python3-pip # 设置Python 3.8为默认python3 RUN update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.8 1 # 安装Lambda Runtime Interface Client(部署到Lambda必需) RUN pip3 install awslambdaric # 后续添加复制代码、安装依赖等步骤 - AWS Deep Learning Containers(DLC)镜像:
AWS官方提供的DLC镜像已预装好CUDA、cuDNN、Python及深度学习框架,同时兼容Lambda运行时。可选择包含Python 3.8和对应CUDA版本的镜像,比如763104351884.dkr.ecr.us-east-1.amazonaws.com/pytorch-inference:1.9.0-gpu-py38-cu111-ubuntu20.04(需根据实际区域、CUDA版本调整)。这类镜像经过AWS优化,无需手动配置CUDA,适配性更强。
- NVIDIA官方CUDA镜像 + 手动配置Lambda运行时:
关键注意事项:
- 若部署到Lambda,必须确保镜像包含Lambda Runtime Interface Client,或使用Lambda兼容的运行时配置。
- 基于Ubuntu的镜像使用
apt-get包管理器,与你原有的CUDA安装命令兼容,修改成本低。
内容的提问来源于stack exchange,提问作者BodeTech
相关产品推荐
相关产品推荐

