Nvidia-docker服务器安装分配

本文详细描述了如何在Ubuntu系统中安装NVIDIA驱动、CUDNN、docker及其相关组件,包括GPU共享、镜像管理、权限设置和文件操作,旨在为实验室环境提供GPU资源管理和数据存储解决方案。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

清空磁盘和系统重置

check the old version of ubuntu

1.nvidia-service
在这里插入图片描述2.disk
在这里插入图片描述
3.nvcc
null
4. docker
在这里插入图片描述

cudnn安装guide
cudnn安装
docker_container扩容
ZFS存储服务

显卡驱动安装
重做了系统 unbuntu 22 制作驱动盘通过一个空U盘

开机按ESC启动
装了基本的gcc c++等编译器
使用ubuntu22自带的 附加驱动软件安装了显卡驱动(nvidia-driver)

安装了nvidia-driver nvidia-devices cuda cudnn
安装了docker nvidia-docker
cuda可以通过命令行安装,见官网
cudnn安装
docker安装
nvidia-docker安装
nvidia-docker安装
//实验中 cuda版本是12.2 nvidia-docker 验证安装命令是

sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:122.2-base-ubuntu22.04 nvidia-smi
#nvidia-docker测试
#### Test nvidia-smi with the latest official CUDA image
sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
#### Test nvidia-smi with the latest official CUDA image on two GPUs
sudo docker run --rm --runtime=nvidia --2 all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi

container创建使用

创建以及提前需要的配置的使用教程
使用教程

#查询命令

## 显卡驱动
nvidia-smi
## cuda
nvcc -V
## nvidia-docker
sudo docker run --rm --runtime=nvidia --gpus all nvidia/cuda:11.6.2-base-ubuntu20.04 nvidia-smi
nvidia-docker version
## cudnn
# cat /usr/local/cuda/include/cudnn_version.h | grep CUDNN_MAJOR -A 2  
cat /usr/include/cudnn_version.h | grep CUDNN_MAJOR -A 2  //这个和视频指导的不一样,应该是因为安装路径时没有在/local/cuda中安装

实验室电脑安装版本

cudnn版本8.9.6👇
在这里插入图片描述
cuda版本11.5👇
在这里插入图片描述

container存储限制的教程

更换安装源

在root下,输入:

sudo gedit /etc/apt/sources.list

更新源各种源文件

文件复制

cp 复制 拷贝
复制、拷贝 copy

  cp 文件名 路径       cp  bj.txt  ./java/jee:把当前目录的bj.txt拷贝到当前目的java文件夹里的jee文件夹里

  cp 文件名 文件名   cp dd.txt  ee.txt   :复制并改名,并存放在当前目录下  (cp源文件名 新文件名)



  cp file1 file2 复制一个文件 
  cp dir/* . 复制一个目录下的所有文件到当前工作目录 
  cp -a /tmp/dir1 . 复制一个目录到当前工作目录 
  cp -a dir1 dir2 复制一个目录

mv 移动/剪切、重命名
1、剪切 移动

      mv文件名 路径   (mv源文件 目的地)

                     mv  aa.txt  ../android/   把当前目录下的文件aa.txt剪切到上一级目录的子目录android目录里

                     mv  aa.txt  ..     把文件aa.txt移动到上一级目录

2.、重命名(假如把剪切的文件存放在同一个目录中,则是重命名)

      mv 文件名 文件名 (mv源文件 目标名称)

                     mv  bb.txt  cc.txt   把文件bb.txt重命名为cc.txt



            mv  dir1  new_dir    重命名/移动 一个目录 

rm 删除文件或目录

   rm          直接删除,rm文件名

   rm -f     强制删除文件或目录,假如要删除的文件不存在,也不提示 rm -f文件名    force  

   rm -i   删除前提示是否删除,默认不删除, 若要删除,输入y                                    interactive


   rm -d   删除空白目录   rm -d空目录名                                                                      directory 
   rm -r  删除有内容的目录,将指定目录下的所有文件及子目录一并处理,递归删除      recursive 
   rm  -rf     filename   强制删除目录或文件(目录有内容时,也删除)
   rmdir     删除文件夹(目录)
   rm -f file1           删除一个叫做 'file1' 的文件'
   rmdir dir1          删除一个叫做 'dir1'的目录 
   rm -rf dir1          删除一个叫做 'dir1'的目录并同时删除其内容 
   rm -rf dir1 dir2   同时删除两个目录及它们的内容

Ubuntu可视化文件操作与权限

当我们想要快速复制粘贴的时候,很多情况下会进行可视化操作,可是这时候会导致没有权限,
解决办法:

第一种方法 :
终端输入sudo nautilus 即可获得可视化文件管理权限
第二种方法 :
使用Ubuntu自带工具gedit
gedit filename也可以进行快速的文件编辑

现有思路

想通过docker实现端口映射登录,实现gpu共享(已搜到解决方案)
因为实验室有多块硬盘,4T+4T+8T,但是系统盘只有256G的固态,想实现创建的container的数据都在8T硬盘上,而大的数据库在4T+4T做两个共享数据库文件到硬盘上。
参考安装思路👇
使用Docker搭建实验室共享GPU服务器 //重点参考了这篇博客
给docker存储目录扩容
修改docker的默认镜像存储位置(二)//参考了这篇的方法
Docker隔离服务器不同用户环境
Docker如何实现多容器共享单个GPU,实现并行的效果?
实现多个物理盘放到一个逻辑卷里并挂载

下载docker镜像

下载网站

docker pull nvidia/cuda:12.2.2-cudnn8-devel-ubuntu22.04

转移docker到8T磁盘

把 8T磁盘挂载到了 /data-8T
修改了 /etc/docker 里的json文件daemon.json

apt的更细源文件在

/etc/apt/sources.list

ssh的配置文件

ssh配置

配置的启动脚本

创建启动脚本

cd /home
vim startup.sh

输入启动脚本内容

#!/bin/bash
service ssh start
/bin/bash

打包镜像

打包为镜像
为了便于以后新建虚拟机,将容器作为镜像打包

nvidia-docker commit -m "一些说明" -a "作者" cuda1 cuda-base:1.0

其中cuda1为容器的名字,cuda-base:1.0为镜像的名字和tag。

共享文件

共享文件制作

新建公共目录

cd /home
sudo mkdir docker-common-dir

新建容器

NV_GPU=0 nvidia-docker run -dit --restart=always -v /home/docker-common-dir:/home/common-dir -p6001:22 --name=vm1 -h=LAB_VM cuda-base:1.0 /home/startup.sh
NV_GPU=1 nvidia-docker run -dit --restart=always -v /home/docker-common-dir:/home/common-dir -p6002:22 --name=vm2 -h=LAB_VM cuda-base:1.0 /home/startup.sh

其中NV_GPU环境变量是为了控制容器可访问的GPU,如果不加这个参数则容器可以访问全部的GPU。--restart=always是为了设置容器随Docker自动启动。将宿主机的 /home/docker-common-dir 映射到了容器的 /home/common-dir 目录,便于和容器的文件传输,容器的文件存储以及容器之间的文件传输。最后跟的是启动脚本,如果不输入则每次容器启动都不会自动启动ssh服务。
如果一切正常的话,现在已经可以通过ssh客户端连接两个容器了

docker使用命令

docker images //查看镜像
docker ps  //查看container
docker rm <CONTAINER_ID or CONTAINER_NAME> //删除 container
docker rm -f <CONTAINER_ID or CONTAINER_NAME>//如果container在运行的话
docker exec -it <CONTAINER_ID or CONTAINER_NAME> bash //进入container
docker system df  //查看image、container
docker system df -v 查看 每个 image、container详细大小
docker stop  <CONTAINER_ID or CONTAINER_NAME> //暂停容器
docker restart <CONTAINER_ID or CONTAINER_NAME> //重启容器
docker rmi <IMGAE_ID or IMAGE_NAME> //删除镜像

重启docker
sudo systemctl restart docker

创建新的container ,样例:

nvidia-docker run -dit -p2345:22 --name=cuda1 -h=LAB_VM nvidia/cuda:10.1-cudnn7-runtime-ubuntu16.04

修改密码:

sudo passwd

scp传输文件

1.从服务器下载到windows本地
首先打开window本地cmd;

cmd中输入如下命令

// <portname>代表服务器端口
//username代表服务器用户名
//<ip address>代表服务器ip地址
//<address_server>代表服务器上要传送的文件夹的绝对地址
//<address_windows>代表本地接收的绝对地址
 scp -P <portname> -r username@<ip address>:<address_server> <address_windows>
 // -P表示端口号
// -r表示文件夹,去掉表示文件

再输入密码即可传送成功

如下

scp -P 5623 -r  myname@13.25.26.225:/home/myname/xxxx D:\workpace\xxx 

从windows本地传送到服务器
cmd中输入如下命令

// <portname>代表服务器端口
//username代表服务器用户名
//<ip address>代表服务器ip地址
//<address_server>代表服务器上要传送的文件夹的绝对地址
//<address_windows>代表本地接收的绝对地址
 scp -P <portname> -r  <address_windows>  username@<ip address>:<address_server>
 // -P表示端口号
// -r表示文件夹,去掉表示文件

再输入密码即可传送成功

如下

scp -P 5623 -r   D:\workpace\xxx  myname@13.25.26.225:/home/myname/xxxx

安装镜像环境

apt更新了清华源
安装了基础环境
gcc
vim Linux文本编辑库
openssh-server ssh远程连接库
net-tools 包含ifconfig,netstat等指令
iputils-ping 包含ping指令
wget 下载文件指令
curl 网络请求指令
git 版本控制


👇以下内容有误,可以参考ubuntu下Annaconda环境安装GPU的pytorch(docker镜像)

清华镜像源conda
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/free/
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/pkgs/main/
# 以上两条是Anaconda官方库的镜像

conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/conda-forge/
# 以上是Anaconda第三方库 Conda Forge的镜像

# for linux
conda config --add channels https://mirrors.tuna.tsinghua.edu.cn/anaconda/cloud/pytorch/
# for legacy win-64
conda config --remove-key channels  //conda 恢复原下载源配置
CondaError: Downloaded bytes did not match Content-Length

在安装pytorch的时候安装到半路,显示CondaError: Downloaded bytes did not match Content-Length。

网上的解决方法是添加清华源的镜像,但我的已经是清华源镜像了,所以解决方法是把timeout放大,600还是不行,把时间延长到1000.0就成功安装了。命令如下:

conda config --set remote_read_timeout_secs 1000.0

清理conda
conda clean --all
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值