部署容器

前提条件

启动容器

请执行如下命令基于新镜像运行一个容器。

docker run -it -e ASCEND_VISIBLE_DEVICES=xxx image-name:tag /bin/bash
表1 参数解释

参数

参数说明

-e ASCEND_VISIBLE_DEVICES=xxx

使用ASCEND_VISIBLE_DEVICES环境变量指定被挂载至容器中的NPU设备,使用设备序号指定设备,支持单个和范围指定且支持混用。例如:

  1. ASCEND_VISIBLE_DEVICES=0 表示将0号设备(/dev/davinci0)挂载入容器中。
  2. ASCEND_VISIBLE_DEVICES=1,3 表示将1、3号设备挂载入容器中。
  3. ASCEND_VISIBLE_DEVICES=0-2 表示将0号至2号设备(包含0号和2号)挂载入容器中,效果同-e ASCEND_VISIBLE_DEVICES=0,1,2
  4. ASCEND_VISIBLE_DEVICES=0-2,4 表示将0号至2号以及4号设备挂载入容器,效果同ASCEND_VISIBLE_DEVICES=0,1,2,4

image-name:tag

镜像名称与标签,请用户根据实际情况更换(如“ascend-infer:infer_TAG”)。

执行该命令后,如果显示容器ID(本例为“3330d6524117”),则表示已经运行并进入该容器。

root@3330d6524117:/# 
  • 如果用户在容器内创建非root用户作为运行用户,则该运行用户所属的属组必须和宿主机驱动运行用户所属属组相同。

    以在容器内创建HwHiAiUser用户为例:

    groupadd -g gid HwHiAiUser && useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser

    请将上述命令中的gid替换为宿主机驱动运行用户的gid值,可通过在宿主机上执行id HwHiAiUser(以宿主机驱动运行用户为HwHiAiUser为例)查看。

  • Ascend-Docker-Runtime默认挂载的内容如Ascend Docker Runtime默认挂载内容所示。若用户在宿主机安装驱动时采用的是指定路径方式,需自行挂载所需目录和文件。命令示例如下(请根据实际情况修改):

    docker run -it -e ASCEND_VISIBLE_DEVICES=xxx -v ${install_path}/driver:${install_path}/driver:ro -v /usr/local/dcmi:/usr/local/dcmi:ro -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi:ro image-name:tag

    其中${install_path}为驱动安装路径。

  • 当用户不需要挂载基础配置文件base中的所有内容时,可使用ASCEND_RUNTIME_MOUNTS环境变量读取自定义配置文件,减少挂载内容。自定义配置文件挂载内容须基于“base.list”文件,base.list内容如Ascend Docker Runtime默认挂载内容所示,并确保挂载内容及子目录不存在符号链接。创建配置文件请参见创建配置文件,以配置文件“hostlog.list”为例:

    docker run --rm -it -e ASCEND_VISIBLE_DEVICES=xxx -e ASCEND_RUNTIME_MOUNTS=hostlog image-name:tag /bin/bash

    hostlog请根据实际配置文件名修改。

  • 可使用ASCEND_RUNTIME_OPTIONS环境变量调整被挂载的内容,若值设为NODRV则不挂载非设备的目录和文件,若值设为VIRTUAL则挂载虚拟设备(/dev/vdavinciX),以值设为NODRV为例:

    docker run --rm -it -e ASCEND_VISIBLE_DEVICES=xxx -e ASCEND_RUNTIME_OPTIONS=NODRV image-name:tag /bin/bash

    容器中将仅挂载NPU设备和管理设备(如/dev/davinci0、/dev/davinci_manager、/dev/hisi_hdc、/dev/devmm_svm),为在容器中安装驱动的场景提供支持。

  • 容器内日志查看与日志级别设置方法同宿主机,详细说明请参见CANN 日志参考
    • 日志查看

      容器内支持查看Host侧与Device侧应用类日志,不支持查看Device侧系统类日志。

    • 日志级别设置

      容器内只支持设置Host侧日志级别,不支持设置Device侧。