在使用 Ubuntu 22.04 容器(尤其是 Docker 容器)时,默认的官方源下载速度较慢,将 apt 和 pip 源切换为阿里云镜像源能大幅提升软件包安装/更新速度。本文以 Ubuntu 22.04 (jammy) 为例,详细讲解一键切换阿里云源的方法,包含容器内手动执行、Dockerfile 集成、pip 源加速等场景。

一、一键切换阿里云 apt 源(容器内手动执行)

1. 备份原有源文件

首先备份系统默认的 sources.list,防止修改出错后无法恢复:

cp /etc/apt/sources.list /etc/apt/sources.list.bak

2. 替换为阿里云 jammy 源

直接覆盖写入阿里云适配 Ubuntu 22.04 的源配置:

cat > /etc/apt/sources.list << 'EOF'
deb https://mirrors.aliyun.com/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-security main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.aliyun.com/ubuntu/ jammy-backports main restricted universe multiverse
EOF

3. 更新 apt 索引并验证

清理旧缓存并更新索引,使新源生效:

apt clean
apt update

执行 apt update 后,如果输出中出现 https://mirrors.aliyun.com/ubuntu 相关地址,说明源切换成功。

4. 示例:安装 Python 相关包

切换源后,快速安装 Python 依赖:

apt install -y python3 python3-pip python3-dev python3-venv

二、Dockerfile 中集成阿里云源(推荐)

如果通过 Dockerfile 构建镜像,可直接在构建阶段替换源,避免每次启动容器都手动操作。以 nvidia/cuda:12.1.0-cudnn8-devel-ubuntu22.04 基础镜像为例:

FROM nvidia/cuda:12.1.0-cudnn8-devel-ubuntu22.04

# 替换阿里云 apt 源
RUN sed -i 's@archive.ubuntu.com@mirrors.aliyun.com@g' /etc/apt/sources.list && \
    sed -i 's@security.ubuntu.com@mirrors.aliyun.com@g' /etc/apt/sources.list && \
    # 更新索引并安装依赖
    apt update && \
    apt install -y python3 python3-pip python3-dev python3-venv && \
    # 清理缓存减小镜像体积
    rm -rf /var/lib/apt/lists/*

说明sed 命令直接替换源地址中的官方域名,比覆盖写入更简洁;最后清理 /var/lib/apt/lists/* 可避免缓存文件占用镜像空间。

三、额外加速:pip 切换阿里云源(国内必做)

Ubuntu 源切换后,pip 仍默认使用官方源,国内访问较慢,建议同步切换阿里云 pip 源:

# 全局配置 pip 阿里云源
python3 -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/

执行后,后续使用 pip install 安装 Python 包(如 torch、tensorflow 等)时,会自动从阿里云镜像拉取,速度大幅提升。

四、扩展:定制深度学习环境 Dockerfile 模板

针对深度学习场景(PyTorch/TensorFlow),可基于上述内容定制完整的 Dockerfile,集成 CUDA 12.1 + Python 3.10 + 国内源 + 常用库:

FROM nvidia/cuda:12.1.0-cudnn8-devel-ubuntu22.04

# 替换阿里云 apt 源
RUN sed -i 's@archive.ubuntu.com@mirrors.aliyun.com@g' /etc/apt/sources.list && \
    sed -i 's@security.ubuntu.com@mirrors.aliyun.com@g' /etc/apt/sources.list && \
    apt update && \
    # 安装基础依赖
    apt install -y python3 python3-pip python3-dev python3-venv git && \
    # 升级 pip 并配置阿里云源
    python3 -m pip install --upgrade pip && \
    python3 -m pip config set global.index-url https://mirrors.aliyun.com/pypi/simple/ && \
    # 安装常用深度学习库(示例)
    python3 -m pip install torch torchvision torchaudio --index-url https://download.pytorch.org/whl/cu121 && \
    python3 -m pip install numpy pandas matplotlib scikit-learn && \
    # 清理缓存
    rm -rf /var/lib/apt/lists/* && \
    rm -rf ~/.cache/pip

总结

  1. Ubuntu 22.04 容器切换阿里云 apt 源核心是替换 sources.list 为 jammy 版本的阿里云地址,手动执行或 Dockerfile 集成均可;
  2. 切换源后需执行 apt update 使配置生效,可通过输出日志验证是否切换成功;
  3. 国内使用时,建议同时配置 pip 阿里云源,进一步提升 Python 包安装速度。

如果需要针对 PyTorch/TensorFlow 等框架定制更贴合业务的 Dockerfile,可根据实际需求调整依赖包列表。

更多推荐