华为鲲鹏服务器安装docker + GPU调用(已实际测试)

1、安装docker==19.03.9

本教程所用docker及其他安装包可使用如下链接下载:
百度网盘链接-docker,提取码:lj22
链接:https://pan.baidu.com/s/1f_ODBotCbxNsFKWgoOA7gw
提取码:lj22

安装流程(!!操作的时候要使用root用户操作,不然会报错 !!)

方法参考博客:Linux ARM架构-离线部署 Docker-银河麒麟V10操作系统

!!! 操作的时候要使用root用户操作,不然会报错 !!!
!!! 操作的时候要使用root用户操作,不然会报错 !!!
!!! 操作的时候要使用root用户操作,不然会报错 !!!
!!!重要的事情说三遍!!!

如果不是root账户,如admin等账户,且root账户无法使用远程登录,使用

su - root 

转到root账户,输入密码即可,然后在root账户进行下一步操作(包括上传,解压,复制等)

压缩包解压缩

tar -zxvf docker-19.03.9.tgz

里面包含的文件应该如下,如果卸载或对文件升级权限可参考
华为鲲鹏服务器安装docker + GPU调用(已实际测试)_第1张图片
把解压得到的docker内的文件复制到 /usr/bin 文件夹中,自动安装docker

cp docker/* /usr/bin/ #此时,如果不是root账户,会提示没有文件操作权限

查看docker是否已经安装:

docker version

对docker.service进行编辑

vim /usr/lib/systemd/system/docker.service

复制如下代码到docker.service中

[Unit]
Description=Docker Application Container Engine
Documentation=https://docs.docker.com
After=network-online.target firewalld.service
Wants=network-online.target
[Service]
Type=notify
ExecStart=/usr/bin/dockerd
ExecReload=/bin/kill -s HUP $MAINPID
LimitNOFILE=infinity
LimitNPROC=infinity
LimitCORE=infinity
TimeoutStartSec=0
Delegate=yes
KillMode=process
Restart=on-failure
StartLimitBurst=3
StartLimitInterval=60s
[Install]
WantedBy=multi-user.target

验证docker是否安装成功

systemctl daemon-reload   
systemctl start docker.service

docker ps 查看docker服务是否运行

目前为止,如果按照以上操作的话,应该是可以安装成功的,如果报错,可能是由于没有使用root权限进行操作

报错:docker.service或contained无法启动

参考博客:解决docker.service无法启动报错

解决方案:
首先使用dockerd --debug命令查看无法启动的原因

报错类似于:
failed to start containerd: exec: "containerd": executable file not found in $PATH

使用  ls -l /usr/bin/containerd   查看/usr/bin中的文件权限可见:

在这里插入图片描述

可见,containerd文件只有 r 权限,没有执行权限。问题基本上定位了,是因为containerd文件没有执行权限导致的错误,类似其他的文件也没有权限
所以需要为containerd等文件升级权限:

chmod a+x /usr/bin/containerd,
chmod a+x /usr/bin/containerd-shim
chmod a+x /usr/bin/ctr
chmod a+x /usr/bin/docker
chmod a+x /usr/bin/dockerd
chmod a+x /usr/bin/docker-init
chmod a+x /usr/bin/runc
chmod a+x /usr/bin/docker-proxy

尝试是否可以正常启动 docker.service
查看 docker info,显示正常

注意:

此时是无法在docker容器内调用GPU的,需要安装nvidia-container-toolkit等依赖包。如果代码不需要调用GPU则直接忽略后续步骤

2、安装nvidia-container-toolkit

下载对应的安装包

对应19.03.9的安装包包括:

libnvidia-container-tools-1.11.0-1.aarch64.rpm
libnvidia-container1-1.11.0-1.aarch64.rpm
nvidia-container-toolkit-base-1.11.0-1.aarch64.rpm
nvidia-container-toolkit-1.11.0-1.aarch64.rpm

依次执行安装命令

rpm -ivh libnvidia-container-tools-1.11.0-1.aarch64.rpm
rpm -ivh libnvidia-container1-1.11.0-1.aarch64.rpm
rpm -ivh nvidia-container-toolkit-base-1.11.0-1.aarch64.rpm
rpm -ivh nvidia-container-toolkit-1.11.0-1.aarch64.rpm

重启docker.service

systemctl daemon-reload
systemctl restart docker

3、运行docker,并验证是否可以调用GPU

基本的验证方法

load 镜像:docker load -i yolox.tar

启动容器:docker run -d --gpus all --shm-size 8G -p 22222:22 image_name:tag_name /usr/sbin/sshD -D

进入容器:docker exec -it 容器ID /bin/bash

nvidia-smi 查看容器是否可以调用GPU

重点查看pytorch是否可以调用GPU:
[[email protected]]python3
>>> import torch
>>> print(torch.cuda.is_available())
>>> True
如果返回True说明安装成功

代码调用GPU验证

python3 algorithm.py

查看GPU调用:watch -n 0.1 nvidia-smi,是否有进程调用,调用的显卡数量

4、云服务器配置及下载相关文件

做内网配置时往往需要使用联网的同样架构的云服务器先下载安装包。华为鲲鹏服务器安装时的联网云服务器建议使用华为云服务器,CentOS系统,鲲鹏服务器,而不是使用麒麟操作系统,这样下载的会顺利很多

设置yum源

麒麟/CentOS 8 里面的yum源的配置问题,因为centOS8于2021年12月31日停止了源的服务,导致配置源比较繁琐,会报错:
Failed to download metadata for repo ‘AppStream’

查询yum源   yum repolist
yum卸载	  yum -y remove xxx
查看系统内核 uname -r
查看系统版本 cat /etc/centos-release

因此需要切换yum源。这是试验后可靠的方法。

cd /etc/yum.repos.d    #安装yum源,进入目录
ll   #查看当前目录的所有文件
rm -rf ./*  #删除当前的所有文件

### 切换源(任选一个命令,我这选的是1 看着来吧)
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-vault-8.5.2111.repo

yum makecache  # 建立缓存

yum -y update  #试验更新yum是否可以运行

为云服务器安装docker

可以像内网服务器中一样,安装离线版的docker,也可以直接 yum install docker-ce,docker-io,但是要保证下载安装的docker和所需要的版本一致。docker version == 19.03.9

下载相关软件的安装包

yum install -y --downloadonly --downloaddir=./ libnvidia-container-tools libnvidia-container nvidia-container-toolkit nvidia-container-runtime

上传到内网服务器中安装

rpm -ivh ./* --nodeps

5、docker 卸载

由于本教程是采用直接复制的方式进行安装,而不是采用 yum 等方式安装,因此,探索了docker的卸载方式。主要的思路是删除掉

首先删除所有容器并停止docker

docker stop $(docker ps -q)   # 停止所有容器
docker rm $(docker ps -aq)   # 删除所有容器
systemctl stop docker     # 停止docker

#杀掉docker进程:

ps -ef|grep docker
kill -9 ID

删除所有docker文件

(1)如果docker是用yum安装的:
yum list installed |grep docker    # 查找yum安装的docker相关包
rpm -qa |grep docker  #查找docker相关的rpm包
yum -y remove xxx   # 删除yum安装包

例如:
yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine
(2)使用本教程的步骤一安装的,需要把相关的东西卸载掉

rm -rf /etc/docker
rm -rf /run/docker
rm -rf /var/lib/dockershim
rm -rf /var/lib/docker
### 把之前复制到/usr/bin里面的东西也删除掉
rm -rf /usr/bin/docker
rm -rf /usr/bin/dockerd
rm -rf /usr/bin/containerd-shim
rm -rf /usr/bin/ctr
rm -rf /usr/bin/docker-init
/usr/bin/runc
rm -rf /usr/bin/docker-proxy

rm -rf /usr/lib/systemd/system/docker.service   #删除docker.service
rm -rf /usr/lib/docker  # 最终要删除这个

查看docker version,如果没有显示代表完全删除干净了

你可能感兴趣的:(docker,服务器,linux)