本教程所用docker及其他安装包可使用如下链接下载:
百度网盘链接-docker,提取码:lj22
链接:https://pan.baidu.com/s/1f_ODBotCbxNsFKWgoOA7gw
提取码:lj22
方法参考博客:Linux ARM架构-离线部署 Docker-银河麒麟V10操作系统
!!! 操作的时候要使用root用户操作,不然会报错 !!!
!!! 操作的时候要使用root用户操作,不然会报错 !!!
!!! 操作的时候要使用root用户操作,不然会报错 !!!
!!!重要的事情说三遍!!!
如果不是root账户,如admin等账户,且root账户无法使用远程登录,使用
su - root
转到root账户,输入密码即可,然后在root账户进行下一步操作(包括上传,解压,复制等)
压缩包解压缩
tar -zxvf docker-19.03.9.tgz
里面包含的文件应该如下,如果卸载或对文件升级权限可参考
把解压得到的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无法启动报错
解决方案:
首先使用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则直接忽略后续步骤
对应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
systemctl daemon-reload
systemctl restart docker
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说明安装成功
python3 algorithm.py
查看GPU调用:watch -n 0.1 nvidia-smi,是否有进程调用,调用的显卡数量
做内网配置时往往需要使用联网的同样架构的云服务器先下载安装包。华为鲲鹏服务器安装时的联网云服务器建议使用华为云服务器,CentOS系统,鲲鹏服务器,而不是使用麒麟操作系统,这样下载的会顺利很多
麒麟/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,也可以直接 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
由于本教程是采用直接复制的方式进行安装,而不是采用 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,如果没有显示代表完全删除干净了