在 OpenEuler 系统上安装 Docker 和 Nvidia-Docker 调用物理机的 GPU 资源

在国产操作系统OpenEuler上,安装docker和nvidia-docker,实现在docker容器里调用物理机的GPU资源,从而实现通过docker部署AI识别相关的服务。

环境检查

ip设置

# 设置ip
nmcli con add type ethernet con-name net-static ifname eno1 ip4 192.168.200.10/24 gw4 192.168.200.1 
# 查看网卡状态
nmcli dev status
# 查看ip
ip addr
# 关闭网卡
nmcli device disconnect eno1
# 启动网卡
nmcli connection up id eno1

关闭selinux

1、查看 selinux 状态,SELinux=enabled 即开启

sestatus

2、关闭selinux,SELINUX=disabled 即关闭

sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config

3.重启服务器

reboot

显卡检查

# 查看显卡状态
lspci | grep -i nvidia
lspci | grep -i vga

查询结果如下:

可以查询到显卡的型号,需要注意以下参数:
(rev a1) 表示显卡已启用
(rev ff) 表示显卡未启用,需要根据服务器型号通过BIOS开启

在这里插入图片描述

显卡驱动安装

检查驱动是否安装

# 执行,如果没有找到命令,则说明驱动没有安装,需要手动安装。
nvidia-smi

禁用nouveau系统自带驱动

注意: 安装驱动前,需要禁用nouveau系统自带驱动

1、查看系统自带的驱动,如果有结果,则说明存在nouveau,没有则直接跳过这一步。

lsmod | grep nouveau

2、禁用nouveau系统自带驱动

# 编辑如下文件:
vi /usr/lib/modprobe.d/dist-blacklist.conf

# 然后在最后添加如下内容:
blacklist nouveau
options nouveau modeset=0

3、重启服务器
重启后,确认成功禁用
在这里插入图片描述

安装基础rpm依赖包

说明: 安装Nvidia驱动所需要的依赖包为:kernel-devel、gcc、dkms
注意: yum提供的kernel-devel的版本要和当前服务器内核版本一致,确保所需的依赖包版本一致
处理方法: 直接找下载操作系统对应版本的iso文件,设置本地yum源,通过本地yum源安装所需依赖包
本地yum源配置参考: https://docs.openeuler.org/zh/docs/22.03_LTS/docs/Administration/搭建repo服务器.html

1、查看kernel-devel版本

# 查看服务器内核版本
uname -r

# 查看yum环境中提供的kernel-devel包版本
yum list|grep kernel-devel

查询结果如下:在这里插入图片描述

2、安装依赖包。

yum install gcc dkms gcc-c++

下载安装显卡驱动安装

1、查看显卡型号

lspci | grep -i vga

查询结果如下:

显卡型号为: NVIDIA GeForce RTX 3060 Ti

在这里插入图片描述

2、下载显卡驱动

下载地址: https://www.nvidia.cn/geforce/drivers/

选择以下信息,下载最新版本的驱动
在这里插入图片描述

我这里下载的是 “驱动程序版本: 525.1160 - 发行日期: 2023-5-9”
在这里插入图片描述

3、安装显卡驱动

将驱动上传到服务器上,在驱动路径下执行命令

./NVIDIA-Linux-x86_64-525.116.04.run --kernel-source-path=/usr/src/kernels/5.10.0-60.18.0.50.oe2203.x86_64/ -no-x-check

在命令运行完成后执行 nvidia-smi 查看显卡状态
正常返回结果如下:
在这里插入图片描述

docker 和 nvidia-docker 安装

安装docker

1、下载docker安装包

下载地址: https://download.docker.com/linux/static/stable/x86_64/

2、上传安装包到 /opt/software

通过文件传输工具,如:winscp、xftp

3、解压安装

tar -zxvf docker-20.10.9.tgz

4、复制二进制文件到/usr/bin目录下

cp /home/docker/* /usr/bin/

5、配置系统服务,创建docker.service文件

vi /usr/lib/systemd/system/docker.service
# 按 "i键" 进入编辑模式,单机部署或portainer管理端部署时写入以下内容
-----------------------------------------------------------------
[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
EnvironmentFile=-/etc/default/docker
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP
LimitNOFILE=infinity
LimitNPROC=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target
-----------------------------------------------------
# 退出,然后按一下esc键,然后直接输入:wq,意思就是写完以后保存。

6、(非必选,根据实际情况决定)
配置daemin.json文件,设置docker数据存储目录、限制容器日志大小,开启docker 2375端口、配置docker hub仓库地址

# 创建目录
mkdir /etc/docker

# 编辑 daemon.json 文件
vi /etc/docker/daemon.json
# 写入
{
"data-root": "/opt/docker",
"log-driver": "json-file",
"log-opts": {"max-size":"500m", "max-file":"4"},
"hosts": ["tcp://0.0.0.0:2375", "unix:///var/run/docker.sock"],
"default-ulimits": {"nofile": {"Name": "nofile","Hard": 64000,"Soft": 64000}},
"insecure-registries" : ["192.168.10.156"]
}

说明:
​data-root —设置docker数据默认存储路径
​log-driver —设置容器日志的格式为json
​log-opts —设置单个日志文件的大小为 500M,最多存储 4 个日志文件
​tcp://0.0.0.0:2375 —表示允许任何远程客户端通过 2375 端口连接 DockerDaemon
​unix:///var/run/docker.sock —表示本地客户端将通过这个来连接 Docker Daemon

insecure-registries —配置docker hub 仓库地址

default-ulimits -调整默认的ulimit 值

备注:
portainer 所在的主机不需要配置 hosts 这一行的内容,编辑配置文件时删除即可。
​在没有docker hub仓库地址的时候, insecure-registries 这一行的内容可以不配置,编辑配置文件时删除即可。

7、重启docker的守护线程

systemctl daemon-reload           #刷新系统服务配置文件
systemctl start docker.service    #启动docker
systemctl enable docker.service   #配置开机自启
systemctl status docker.service   #查看docker状态

8、执行docker version 查看是否安装成功

正常返回如下:
在这里插入图片描述

安装nvidia-docker

1、下载nvidia-docker安装包

说明: 这里是通过rpm包的方式安装,需要下载以下rpm包

注意: 这里直接选择centos7即可,确保各个文件版本是对应的,且尽可能下载最新版本防止出现问题

下载地址: https://github.com/NVIDIA/libnvidia-container/tree/gh-pages/stable

需要下载的rpm包:
nvidia-container-runtime-3.9.0-1.noarch.rpm
nvidia-docker2-2.9.1-1.noarch.rpm
nvidia-container-toolkit-1.9.0-1.x86 64.rpm
stable centos7 x86 64 libnvidia-container1-1.9.0-1.x86 64.rpm
stable centos7 x86 64 libnvidia-container-tools-1.9.0-1.x86 64.rpm
stable centos7 x86 64 libnvidia-container-devel-1.9.0-1.x86 64.rpm

在这里插入图片描述

2、安装nvidia-docker

将下载完成的文件上传到服务器同一个文件夹内,运行以下命令安装(不同的Linux发行版用对应的安装指令安装)

rpm -Uvh *.rpm --nodeps --force

安装完成后需要重启docker服务

systemctl restart docker

3、测试,下载tritonserver镜像进行测试

根据实际情况,下载对应版本的tritonserver,离线服务器可以通过镜像导入导出的方式测试。

镜像源地址: https://catalog.ngc.nvidia.com/orgs/nvidia/containers/tritonserver/tags

# 拉取镜像
docker pull nvcr.io/nvidia/tritonserver:21.10-py3

# 运行容器
docker run -it --gpus all nvcr.io/nvidia/tritonserver:21.10-py3 /bin/bash

在容器里执行nvidia-smi 命令,成功则返回如下结果:
在这里插入图片描述
到这里,docker和nvidia-docker已经安装完成,从程序里已经可以调用到物理显卡,接下来就进行AI服务安装。

  • 5
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
openEuler操作系统安装Docker的过程如下: 1. 首先,我们需要解决依赖问题。默认情况下,openEuler安装好后,安装Docker会报依赖container-selinux版本过低的错误。为了解决这个问题,您可以按照以下步骤进行操作: - 您可以使用华为openEuler提供的方法来安装最新版本的Docker。具体步骤如下: - 引用中提到的华为openEuler安装Docker最新版的过程。 - 或者,如果您是在arm64平台下安装Docker,可以使用离线安装包和一键安装脚本。具体步骤如下: - 引用中提到的arm64平台下Dockerdocker-compose离线安装包的安装过程。 2. 安装完成后,您还需要设置Docker源。在openEuler操作系统中,可以使用与CentOS相同的方法来设置Docker源。具体步骤如下: - 使用以下命令将Docker源添加到openEuler的配置管理器中: ``` dnf config-manager --add-repo http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo ``` - 使用以下命令安装Docker: ``` dnf install -y docker-ce ``` - 使用以下命令启动Docker并设置为开自启动: ``` systemctl start docker systemctl enable docker ``` - 最后,您可以使用以下命令验证Docker安装版本: ``` docker -v ``` 通过以上步骤,您可以在openEuler操作系统中成功安装Docker。<span class="em">1</span><span class="em">2</span><span class="em">3</span> #### 引用[.reference_title] - *1* *3* [华为欧拉操作系统openEulerOS 安装docker最新版](https://blog.csdn.net/Jactil/article/details/124969667)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [arm64平台下dockerdocker-compose离线安装包,含一键安装脚本,已在openEuler操作系统下验证](https://download.csdn.net/download/ChennyWJS/88058544)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值