OpenEuler 系统安装 docker 和 nvidia-docker

1. 环境检查

1.1 ip设置

shell 复制代码
# 设置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

1.2 关闭selinux

  1. 查看 selinux 状态,SELinux=enabled 即开启
shell 复制代码
sestatus
  1. 关闭selinux,SELINUX=disabled 即关闭
shell 复制代码
sed -i 's/SELINUX=enforcing/SELINUX=disabled/g' /etc/selinux/config
  1. 重启服务器
shell 复制代码
reboot

1.3 显卡检查

shell 复制代码
# 查看显卡状态
lspci | grep -i nvidia
lspci | grep -i vga

查询结果如下:

可以查询到显卡的型号,需要注意以下参数:

(rev a1) 表示显卡已启用

(rev ff) 表示显卡未启用,需要根据服务器型号通过BIOS开启

2. 显卡驱动安装

2.1 检查驱动是否安装

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

2.2 禁用nouveau系统自带驱动

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

  1. 查看系统自带的驱动,如果有结果,则说明存在nouveau,没有则直接跳过这一步。
shell 复制代码
lsmod | grep nouveau
  1. 禁用nouveau系统自带驱动
plain 复制代码
# 编辑如下文件:
vi /usr/lib/modprobe.d/dist-blacklist.conf

# 然后在最后添加如下内容:
blacklist nouveau
options nouveau modeset=0
  1. 重启服务器

重启后,确认成功禁用

2.3 安装基础rpm依赖包

说明:安装Nvidia驱动所需要的依赖包为:kernel-devel、gcc、dkms

注意:yum提供的kernel-devel的版本要和当前服务器内核版本一致,确保所需的依赖包版本一致

处理方法:直接找下载操作系统对应版本的iso文件,设置本地yum源,通过本地yum源安装所需依赖包

本地yum源配置参考:docs.openeuler.org/zh/docs/22....

  1. 查看kernel-devel版本
shell 复制代码
# 查看服务器内核版本
uname -r

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

查询结果如下:

  1. 安装依赖包。
shell 复制代码
yum install gcc dkms gcc-c++

2.4 下载安装显卡驱动安装

  1. 查看显卡型号
plain 复制代码
lspci | grep -i vga

查询结果如下:

显卡型号为: NVIDIA GeForce RTX 3060 Ti

  1. 下载显卡驱动

下载地址: www.nvidia.cn/geforce/dri...

选择以下信息,下载最新版本的驱动

我这里下载的是 "驱动程序版本: 525.1160 - 发行日期: 2023-5-9"

3、安装显卡驱动

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

shell 复制代码
./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 查看显卡状态

正常返回结果如下:

3. docker 和 nvidia-docker 安装

3.1 安装docker

  1. 下载docker安装包

下载地址: download.docker.com/linux/stati...

  1. 上传安装包到 /opt/software

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

  1. 解压安装
shell 复制代码
tar -zxvf docker-20.10.9.tgz
  1. 复制二进制文件到/usr/bin目录下
shell 复制代码
cp /home/docker/* /usr/bin/
  1. 配置系统服务,创建docker.service文件
shell 复制代码
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,意思就是写完以后保存。
  1. (非必选,根据实际情况决定)

配置daemin.json文件,设置docker数据存储目录、限制容器日志大小,开启docker 2375端口、配置docker hub仓库地址

shell 复制代码
# 创建目录
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 这一行的内容可以不配置,编辑配置文件时删除即可。

  1. 重启docker的守护线程
shell 复制代码
systemctl daemon-reload           #刷新系统服务配置文件
systemctl start docker.service    #启动docker
systemctl enable docker.service   #配置开机自启
systemctl status docker.service   #查看docker状态
  1. 执行docker version 查看是否安装成功

正常返回如下:

3.2 安装nvidia-docker

  1. 下载nvidia-docker安装包

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

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

下载地址: github.com/NVIDIA/libn...

需要下载的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

  1. 安装nvidia-docker

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

shell 复制代码
rpm -Uvh *.rpm --nodeps --force

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

shell 复制代码
systemctl restart docker
  1. 测试,下载tritonserver镜像进行测试

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

镜像源地址: catalog.ngc.nvidia.com/orgs/nvidia...

shell 复制代码
# 拉取镜像
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服务安装。

相关推荐
std860214 小时前
容器化入门:一文掌握Docker安装与核心概念
运维·docker·容器
桥边驿语人7 小时前
Docker 容器无法访问外网的问题排查与解决指南
运维·docker·容器
清静诗意8 小时前
在 Ubuntu 上通过 Docker 与 Docker Compose 部署项目的完整指南
linux·ubuntu·docker
小Lu的开源日常11 小时前
如何使用 GitHub Action 发布 Docker 镜像
docker·开源·github
神秘人X70711 小时前
docker安装
docker·容器·eureka
失因11 小时前
Docker 容器与镜像
java·运维·spring cloud·docker·容器
耳东哇12 小时前
sentinel docker gateway k8s 集群 主从
docker·gateway·sentinel
费益洲15 小时前
Docker 网络详解:(二)虚拟网络环境搭建与测试
docker·容器
郁大锤15 小时前
Docker 中删除镜像与容器的完整指南
运维·docker·容器
xx.ii15 小时前
docker镜像和容器
docker·容器·eureka