当前位置: 首页 > news >正文

华为服务器中Mindie镜像的部署及启动方法

一、部署方法

首先要安装好Docker,然后点开网址https://www.hiascend.com/developer/ascendhub/detail/af85b724a7e5469ebd7ea13c3439d48f

拉取镜像需要申请权限:

注册登录后,即可提交申请,一般需要一个工作日,等审核通过后,点击下载即可弹出如下提示框:

按照上述方法步骤进行操作即可。在有root权限的终端执行,其中鲲鹏服务器为下载arm架构的镜像。

验证镜像是否拉取成功

拉取完成后,可通过以下命令查看本地镜像列表,确认是否存在目标镜像:

docker images | grep 1.0.0-300I-Duo-py311-openeuler24.03-lts

若输出结果包含该镜像信息,则表示拉取成功。

执行docker images命令输出结果如下:

swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie   1.0.0-300I-Duo-py311-openeuler24.03-lts   3a7f38bed48b   6 months ago   13.8GB

上述结果明确显示了镜像的完整名称、标签、ID、创建时间和大小,说明拉取成功。

关于镜像的存储位置

在 Docker 中,镜像默认存储在/var/lib/docker/目录下,具体到您的环境中(从命令行路径[root@localhost overlay2]#来看),使用的是overlay2存储驱动,因此镜像文件实际存储在:

/var/lib/docker/overlay2/

overlay2是 Docker 推荐的存储驱动,镜像文件会以分层(layer)的形式存储在该目录下的子文件夹中,每个文件夹对应镜像的一个分层,通过联合文件系统(UnionFS)技术组合成完整的镜像。

查看 Docker 存储配置的方法

如果想确认具体的存储路径,可以通过以下命令查看 Docker 的详细配置:

docker info | grep "Docker Root Dir"

输出结果通常为:

Docker Root Dir: /var/lib/docker

这就是 Docker 所有数据(包括镜像、容器、卷等)的根目录,镜像的实际分层数据就在其下的overlay2子目录中。

二、启动方法

Docker 的分层存储是底层实现细节,用户无需直接操作这些分层文件,而是通过 Docker 命令来管理和使用镜像。对于你提到的mindie 1.0.0-300I-Duo-py311-openeuler24.03-lts镜像,启动方法如下:

步骤 1:确认镜像的完整名称和标签

从你的docker images输出中,镜像的完整标识为:

swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:1.0.0-300I-Duo-py311-openeuler24.03-lts

(格式:仓库地址/镜像名:标签

步骤 2:启动镜像为容器

使用docker run命令启动镜像,基本格式:

docker run [选项] 镜像完整标识 [容器内执行的命令]

针对mindie镜像(通常是深度学习相关环境),常用启动命令示例:

docker run -it --name my_mindie_container \--privileged=true \swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:1.0.0-300I-Duo-py311-openeuler24.03-lts \/bin/bash
选项说明:
  • -it:以交互模式启动,并分配伪终端(方便进入容器内操作)。
  • --name my_mindie_container:给容器起一个自定义名称(方便后续管理)。
  • --privileged=true:赋予容器特权模式(部分场景需要,如访问硬件设备)。
  • 最后的/bin/bash:指定容器启动后执行的命令(进入 bash 终端)。

步骤 3:使用容器内的功能

启动后会自动进入容器内的 bash 终端,此时可以:

  • 运行镜像中预装的程序(如 MindSpore 相关命令)。
  • 查看环境配置:python --versionpip list等。
  • 若需要退出容器但不停止,按Ctrl+P+Q组合键。

后续管理命令

  • 查看正在运行的容器:docker ps
  • 重新进入已启动的容器:docker exec -it my_mindie_container /bin/bash
  • 停止容器:docker stop my_mindie_container
  • 重启容器:docker restart my_mindie_container
  • 删除容器(需先停止):docker rm my_mindie_container

注意事项

  1. 若镜像需要访问宿主机的 GPU/AI 芯片(如昇腾芯片),可能需要额外添加设备映射参数(如--device=/dev/davinci0),具体需参考该镜像的官方文档。
  2. 若需要持久化数据,可通过-v 宿主机路径:容器内路径挂载目录(如-v /data:/workspace/data)。

通过以上步骤,即可正常使用该镜像的功能,无需关心底层分层文件的具体结构。

启动示例代码:

docker run -it -d --net=host --shm-size=32g \--name Qwen3-32B \--device=/dev/davinci_manager \--device=/dev/hisi_hdc \--device=/dev/devmm_svm \--device=/dev/davinci0 \--device=/dev/davinci1 \--device=/dev/davinci2 \--device=/dev/davinci3 \--device=/dev/davinci4 \--device=/dev/davinci5 \--device=/dev/davinci6 \--device=/dev/davinci7 \-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \-v /usr/local/sbin:/usr/local/sbin:ro \-v /root/:/root/ \swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:1.0.0-300I-Duo-py311-openeuler24.03-lts bash

三、常见问题

(一)从错误信息来看,问题出在docker run命令的最后缺少了要执行的命令,或者命令格式有误(可能是由于换行符导致的空格被识别为命令)。

错误原因分析

命令末尾的反斜杠\后面可能存在多余的空格或特殊字符,导致 Docker 将一个空字符串识别为要执行的命令,而空命令在$PATH中找不到,因此报错:exec: " ": executable file not found in $PATH

解决方法

在命令末尾明确指定要执行的命令(通常是/bin/bashbash),确保没有多余的空格或特殊字符。修正后的命令如下:

docker run -it -d --net=host --shm-size=32g \--name Qwen3-32B \--device=/dev/davinci_manager \--device=/dev/hisi_hdc \--device=/dev/devmm_svm \--device=/dev/davinci0 \--device=/dev/davinci1 \--device=/dev/davinci2 \--device=/dev/davinci3 \--device=/dev/davinci4 \--device=/dev/davinci5 \--device=/dev/davinci6 \--device=/dev/davinci7 \-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \-v /usr/local/sbin:/usr/local/sbin:ro \-v /root/:/root/ \swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:1.0.0-300I-Duo-py311-openeuler24.03-lts \/bin/bash

关键修正点

  1. 确保最后一行的镜像名称后面,明确加上要执行的命令(如/bin/bash)。
  2. 检查每个换行符\后面是否有多余的空格(建议删除\后的所有字符,只保留换行)。

验证容器是否启动

执行上述命令后,通过以下命令查看容器状态:

docker ps | grep Qwen3-32B

若输出容器信息,则表示启动成功。之后可通过以下命令进入容器:

docker exec -it Qwen3-32B bash

如果需要运行镜像中特定的程序(如模型推理脚本),可将最后面的bash替换为具体的命令(例如python /path/to/script.py)。

(二)错误提示表明名为Qwen3-32B的容器已经存在,因此无法创建同名容器。解决方法有两种:

方法 1:删除已存在的同名容器(推荐,若旧容器无用)

  1. 先停止该容器(如果正在运行):

    docker stop Qwen3-32B
    
  2. 然后删除该容器:

    docker rm Qwen3-32B
    
  3. 重新执行原启动命令:

    docker run -it -d --net=host --shm-size=32g \--name Qwen3-32B \--device=/dev/davinci_manager \--device=/dev/hisi_hdc \--device=/dev/devmm_svm \--device=/dev/davinci0 \--device=/dev/davinci1 \--device=/dev/davinci2 \--device=/dev/davinci3 \--device=/dev/davinci4 \--device=/dev/davinci5 \--device=/dev/davinci6 \--device=/dev/davinci7 \-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \-v /usr/local/sbin:/usr/local/sbin:ro \-v /root/:/root/ \swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:1.0.0-300I-Duo-py311-openeuler24.03-lts bash
    

方法 2:给新容器起一个不同的名称(若需要保留旧容器)

只需修改--name参数的值,例如改为Qwen3-32B-new

docker run -it -d --net=host --shm-size=32g \--name Qwen3-32B-new \  # 这里修改了容器名称--device=/dev/davinci_manager \--device=/dev/hisi_hdc \--device=/dev/devmm_svm \--device=/dev/davinci0 \--device=/dev/davinci1 \--device=/dev/davinci2 \--device=/dev/davinci3 \--device=/dev/davinci4 \--device=/dev/davinci5 \--device=/dev/davinci6 \--device=/dev/davinci7 \-v /usr/local/Ascend/driver:/usr/local/Ascend/driver:ro \-v /usr/local/sbin:/usr/local/sbin:ro \-v /root/:/root/ \swr.cn-south-1.myhuaweicloud.com/ascendhub/mindie:1.0.0-300I-Duo-py311-openeuler24.03-lts bash

验证结果

执行成功后,通过以下命令查看容器是否正常运行:

docker ps | grep Qwen3-32B  # 或对应新名称

若输出容器信息,则表示启动成功,之后可通过docker exec -it 容器名称 /bin/bash进入容器操作。

http://www.lryc.cn/news/613630.html

相关文章:

  • Python 基础详解:数据类型(Data Types)—— 程序的“数据基石”
  • AI代码审查大文档处理技术实践
  • 【MySQL】SQL优化
  • LG P7447 [Ynoi2007] rgxsxrs Solution
  • 树莓派安装OpenCV环境
  • 代码库详细笔记
  • 使用 Tauri 开发 Android 应用:环境搭建与入门指南
  • 进程间数据的关联与隔离
  • Next.js 15 重磅发布:React 19 集成 + 性能革命,开发者必看新特性指南
  • 代码随想录day58图论8
  • 一个设备或系统能够同时管理和监控两个摄像头的配
  • Ethereum: 像Uniswap V3贡献者一样开发,克隆、编译与测试v3-core
  • 【Unity Plugins】使用Magica Cloth 2 实现头发和服饰的效果模拟
  • 职责链模式应用场景与C++实现
  • 前端开发工具大全
  • 大疆前端笔试题目详解
  • PostgreSQL 强制索引:当重复数据让优化器“失明”时的解决方案
  • 实验室课程|基于SprinBoot+vue的实验室课程管理系统(源码+数据库+文档)
  • vue3 el-select 加载内容后 触发事件
  • Mysql自定义顺序查询
  • Mysql 单行函数 聚合函数
  • 六类注定烂尾的甲方软件外包必看!这类甲方不要理-优雅草卓伊凡
  • sigprocmask 函数深度解析
  • 【指南版】网络与信息安全岗位系列(三):安全运维工程师
  • Redis 分布式Session
  • Redis面试精讲 Day 16:Redis性能监控与分析工具
  • 锡膏种类多,不同的锡膏有什么区别,该如何正确选择?
  • 深入理解 ReentrantLock和AQS底层源码
  • Day09 Tlisa登录认证
  • 计算机英语详细总结