宿主机目录不挂载容器
前提条件
- 宿主机已经安装过Driver软件包。详情请参见安装驱动和固件(适用于*.run格式)。
- 宿主机已经安装过docker,并启动镜像。方法如下:
- 使用命令yum install docker安装docker。
- 重启docker服务,命令为:
systemctl daemon-reload systemctl restart docker
- 获取CentOS镜像,命令为:
docker pull centos:{宿主机中CentOS操作系统版本}
其中的centos为镜像名,请替换为实际镜像名。宿主机中CentOS操作系统的版本要与容器中CentOS镜像版本一致,例如宿主机为CentOS 7.6.1810,则此处命令为:docker pull centos:7
- 查看镜像,命令为:
docker images
操作步骤
- 在宿主机使用id HwHiAiUser命令查看宿主机HwHiAiUser的gid,并记录该gid的取值,如图10-4所示,则记录gid为1001。
- 在宿主机创建并启动docker容器。
- 使用NPU 20.0.0版本软件包安装时,请执行如下命令:
docker run -it --net=host --pid=host --cap-add LINUX_IMMUTABLE --device=/dev/davinci0 --device=/dev/davinci_manager --device=/dev/devmm_svm --device=/dev/hisi_hdc -v /usr/local/dcmi:/usr/local/dcmi -v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi -v /var/log/npu/slog/container/container_name:/var/log/npu/slog -v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf --name container_name docker_image_id /bin/bash
- 使用NPU 20.0.0以上、NPU 20.1.X系列版本软件包安装时,请执行如下命令:
docker run -it --net=host --pid=host --cap-add LINUX_IMMUTABLE --device=/dev/davinci0 --device=/dev/davinci_manager --device=/dev/devmm_svm --device=/dev/hisi_hdc -v /usr/local/dcmi:/usr/local/dcmi -v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi -v /var/log/npu/slog/container/container_name:/var/log/npu/slog -v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf --name container_name docker_image_id /bin/bash
参数解释如表10-3所示。
表10-3 参数解释参数
参数说明
--net
表示网络映射。可选,该参数支持两种模式配置,用户根据实际情况进行选择。
- host:该场景下容器不会映射出自己的网卡,IP地址等,直接使用宿主机的IP和端口,该场景下在容器中使用ifconfig -a命令,可以查到device的虚拟网口。
如果配置了该参数,则可以在容器内部通过ssh方式登录device。
- bridge:该场景下会为容器配置IP地址,并将容器连接到一个docker0的虚拟网桥,通过docker0网桥以及Iptables nat表配置与宿主机通信。 该场景下在容器中使用ifconfig -a命令,不会显示device虚拟网口。
如果配置为该参数,则启动容器之前,需要先在宿主机执行如下命令,禁止容器转发虚拟网口网段192.168.1.xx的数据,然后再启动容器:
iptables -I FORWARD -s 192.168.1.0/24 -j DROP
--pid
有特殊要求的自行配置容器命令,比如设备驱动的用例有白名单设置,需要宿主机和容器内共pid时,需要配置该选项。
--cap-add LINUX_IMMUTABLE
表示可以修改容器内的文件属性。可选。
--device
表示映射的设备,davinci0需要根据实际设备名称修改。其他保持不变。
-v /usr/local/dcmi:/usr/local/dcmi
将宿主机dcmi的.so和接口文件目录“/usr/local/dcmi”挂载到容器中,请根据实际情况修改。
-v /usr/local/sbin/npu-smi:/usr/local/sbin/npu-smi
使用NPU 20.0.0版本软件包安装时,将宿主机npu-smi工具“/usr/local/sbin/npu-smi”挂载到容器中,请根据实际情况修改。
-v /usr/local/bin/npu-smi:/usr/local/bin/npu-smi
使用NPU 20.0.0以上、NPU 20.1.X系列版本软件包安装时,将宿主机npu-smi工具“/usr/local/bin/npu-smi”挂载到容器中,请根据实际情况修改。
-v /var/log/npu/slog/container/container_name:/var/log/npu/slog
将宿主机日志路径“/var/log/npu/slog/container/container_name”挂载到容器中。请根据实际情况修改。
-v /var/log/npu/conf/slog/slog.conf:/var/log/npu/conf/slog/slog.conf
将宿主机日志配置文件“/var/log/npu/conf/slog/slog.conf”挂载到容器中。请根据实际情况修改。
--name container_name
容器的命名,请替换为实际容器名称。此处命名的“container_name”与“-v /var/log/npu/slog/container/container_name:/var/log/npu/slog”参数中的container_name需保持一致。
docker_image_id
容器镜像ID,请替换为实际容器镜像ID。
如果返回“#”命令提示符,则表示已经进入容器。
- 使用NPU 20.0.0版本软件包安装时,请执行如下命令:
- 在容器内创建HwHiAiUser用户(使用NPU 20.1.X系列版本软件包安装时,用户也可以创建其他非root用户),用于启动slogd守护进程。
groupadd -g gid HwHiAiUser && useradd -g HwHiAiUser -d /home/HwHiAiUser -m HwHiAiUser && echo ok
请将上述命令中的gid替换为1中查出的gid值。若返回“ok”,则说明创建成功。
如果用户创建了其他非root用户,请确保该用户所属的属组必须和Driver运行用户所属属组相同;如果不同,请用户自行添加到Driver运行用户属组。
- 使用exit命令退出容器,在宿主机Driver软件包所在路径,执行如下命令将软件包复制到容器内部。
docker cp /xxx/*.run container_id:/home/HwHiAiUser/software
其中xxx为宿主机上软件包的存放路径,*.run请替换为具体软件包名,container_id为容器ID,可以使用docker ps -a命令查看所使用容器的ID,/home/HwHiAiUser/software为容器内软件包的存放路径,如果没有该路径,请先手动创建;所有路径请用户根据实际情况进行修改。
- 使用如下命令重新进入容器,并进入software目录,根据表10-4所示安装命令以及安装用户安装驱动软件包。
docker start xxx docker attach xxx
其中xxx请替换为具体容器ID或容器名。表10-4 安装命令组件
安装命令
安装用户
运行用户
是否支持安装多版本
备注
Driver
./*.run --docker
默认路径:/usr/local/Ascend
如果用户需要指定安装路径,需要通过--install-path=<path>参数指定。
root
HwHiAiUser
或通过--install-username=username --install-usergroup=usergroup参数指定非root用户
否
更多安装模式请参见参数说明。
若安装过程中无错误信息提示,则表示安装成功。
- 软件包默认安装路径:/usr/local/Ascend
- 安装详细日志路径:/var/log/ascend_seclog/ascend_install.log
- 安装后软件包的安装路径、安装命令以及运行用户信息记录路径:/etc/ascend_install.info
- 启动slogd守护进程。
- 在容器内执行如下命令设置环境变量(通过export方式设置环境变量,该种方式设置的环境变量只在当前窗口有效,设置完成后立即生效):
export LD_LIBRARY_PATH=/usr/local/Ascend/driver/lib64:/usr/local/Ascend/add-ons:$LD_LIBRARY_PATH
其中“/usr/local/Ascend”为默认安装路径,请根据实际情况修改。
- 执行如下命令创建日志相关文件,并启动slogd进程。
mkdir -p /usr/slog mkdir -p /var/log/npu/slog/slogd chown -Rf HwHiAiUser:HwHiAiUser /usr/slog chown -Rf HwHiAiUser:HwHiAiUser /var/log/npu/slog su HwHiAiUser --command "/usr/local/Ascend/driver/tools/slogd &"
- 执行如下命令查看slogd进程,确认驱动包是否安装成功。
ps -ef | grep -v grep | grep "tools/slogd"
若返回如下信息,则说明进程已启动,驱动包安装成功。
root@ascend-HP-ProDesk-600-G4-PCI-MT:/var/log/npu/conf/slog# ps -ef | grep -v grep | grep "tools/slogd" HwHiAiU+ 38 1 0 07:03 ? 00:00:00 /usr/local/Ascend/driver/tools/slogd
- 在容器内执行如下命令设置环境变量(通过export方式设置环境变量,该种方式设置的环境变量只在当前窗口有效,设置完成后立即生效):