昇腾 CANN 容器环境安装指南
本指南基于昇腾 CANN 官方镜像,帮助您通过 Docker 容器化方式,快速搭建面向昇腾 AI 的算子开发环境。
前置条件
请确保以下环境已就绪:
| 条件 | 说明 | 验证命令 |
|---|---|---|
| Docker Engine | 已安装且守护进程正在运行 | docker info |
满足上述条件后,完整部署通常 5 分钟内完成(取决于网络速度);若本地已有 CANN 镜像,则可 秒级完成启动。
1. 获取 CANN 开发镜像
注意
算子开发必须使用带有 -devel 后缀的镜像(包含完整的编译工具链)。请勿使用普通运行时镜像。
1.1 查询本地镜像
运行以下命令检查是否已存在 CANN 开发镜像:
docker images | grep cann | grep devel
示例输出:
REPOSITORY TAG IMAGE ID CREATED SIZE
swr.cn-south-1.myhuaweicloud.com/ascendhub/cann 9.0.0-910b-openeuler24.03-py3.11-devel 6df0c5bbc16f 2 weeks ago 11.9GB
若已有合适版本,可直接跳转至 第 2 节:启动容器。
1.2 拉取 CANN 镜像
1.2.1 获取镜像下载命令
-
访问 CANN 镜像仓库,切换至 "镜像下载" 标签页,浏览可用版本列表(可通过右侧的搜索框过滤):

-
根据以下建议选择镜像版本:
选项 建议 CANN 版本 若无特殊需求,建议选用最新稳定版本 芯片型号 根据实际硬件选择(执行 npu-smi info查看)操作系统 openEuler 或 Ubuntu 均可 开发专用 应选择带有 -devel后缀的版本,该版本包含算子开发所需的完整软件环境注意
必须使用带
-devel后缀的镜像(如...-py3.11-devel),否则无法编译自定义算子。 -
点击“立即下载”,复制生成的
docker pull命令。
1.2.2 在线拉取(服务器具备外网访问能力)
请直接执行复制的命令。示例如下(耗时约 3~5 分钟,具体取决于网络带宽与延迟):
docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.0.0-910b-openeuler24.03-py3.11-devel
镜像拉取完成后,请跳转至 第 2 节:启动容器。
1.2.3 离线导入(服务器无外网访问权限)
若服务器无法直接访问华为云容器镜像仓库(例如处于企业内网等隔离网络环境),请按以下步骤操作:
-
在具备外网访问能力的主机上拉取镜像(注意架构匹配 x86/ARM):
docker pull swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.0.0-910b-openeuler24.03-py3.11-devel -
导出为 tar 文件:
docker save -o cann.tar swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.0.0-910b-openeuler24.03-py3.11-devel -
通过 U 盘或中转网络等方式将
cann.tar传至服务器,并加载:docker load -i cann.tar
可通过执行 docker images 命令查看是否已成功加载,加载后的镜像与在线拉取结果完全一致。
2. 启动容器
2.1 下载容器启动脚本
执行以下命令,将启动脚本下载至 HOME 目录:
cd ~ && curl -fLO --retry 10 --retry-all-errors --retry-delay 3 -A "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/120.0.0.0 Safari/537.36" https://raw.gitcode.com/Ascend/msot/raw/master/example/quick_start/public/ctr_in.py && chmod +x ctr_in.py
说明
1.若提示 --retry-all-errors 参数不存在,说明 curl 版本过低,可移除该参数后重试。
2.若多次下载仍失败,可能触发了 CDN 的反爬虫防护机制,可手动从仓库下载 ctr_in.py 文件。
3.若您的服务器处于企业内网等无法直连外网的环境,可先在当前访问此文档页面的设备上下载该文件,再通过 U 盘或中转网络等方式将其传至服务器。
2.2 执行启动命令
参数说明:
| 参数 | 说明 | 示例 |
|---|---|---|
CONTAINER_NAME |
容器名称,后续可通过该名称登录容器,建议格式:{用途}_{个人标识} |
op_dev_alice |
USER_NAME |
宿主机用户名,用于挂载 $HOME 目录实现数据共享 |
alice |
IMAGE |
Docker 镜像 ID 或完整名称 | 6df0c5bbc16f |
命令格式:
python3 ~/ctr_in.py <CONTAINER_NAME> <USER_NAME> <IMAGE>
执行示例:
# 使用镜像 ID
python3 ~/ctr_in.py op_dev_alice alice 6df0c5bbc16f
# 使用镜像全名
python3 ~/ctr_in.py op_dev_alice alice swr.cn-south-1.myhuaweicloud.com/ascendhub/cann:9.0.0-910b-openeuler24.03-py3.11-devel
预期输出:
启动成功后将直接进入容器,终端显示容器内的命令行提示符,等待输入命令:
Welcome to 5.10.0-60.139.0.166.oe2203.aarch64
System information as of time: Fri Mar 20 06:46:56 UTC 2026
System load: 8.95
Memory used: 6.2%
Swap used: 55.4%
Usage On: 25%
Users online: 0
[root@localhost alice]#
说明
退出后如何重新进入容器?
- 执行:
python3 ~/ctr_in.py op_dev_alice,当仅传入 1 个参数时,该脚本将执行进入已有容器的操作,且支持模糊匹配容器名。 - 也可使用 Docker 原生命令:
docker exec -it op_dev_alice bash。