Nvidia-docker服务器安装分配

清空磁盘和系统重置

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
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: CentOS 是一种广泛使用的Linux操作系统,而NVIDIA-Docker是一个用于在容器中运行GPU加速应用程序的工具。对于在没有互联网连接的环境中安装NVIDIA-Docker,可以通过以下步骤进行离线安装。 1. 从NVIDIA官方网站下载所需的NVIDIA-Docker离线安装包(tar文件),包括NVIDIA-Docker的二进制文件和依赖项。确保选择适用于CentOS的正确版本。 2. 将下载的安装包传输到CentOS服务器上,可以使用U盘、移动硬盘等离线传输设备。 3. 在CentOS服务器上创建一个新的目录,用于解压下载的安装包。例如,可以使用以下命令创建一个名为nvidia-docker的目录: ``` mkdir nvidia-docker ``` 4. 将下载的安装包移动到nvidia-docker目录中。 5. 进入nvidia-docker目录并解压安装包。可以使用以下命令解压: ``` tar -xvf <安装包文件名>.tar.gz ``` 6. 解压后,进入解压得到的目录中,例如: ``` cd nvidia-docker-<版本号> ``` 7. 执行安装脚本以进行NVIDIA-Docker的离线安装。可以使用以下命令运行安装脚本: ``` ./install.sh ``` 8. 安装脚本会检查并安装NVIDIA-Docker所需要的依赖项,并将NVIDIA-Docker设置为默认的容器运行时。 9. 完成安装后,可以通过运行以下命令验证NVIDIA-Docker是否正确安装: ``` nvidia-docker run --rm nvidia/cuda nvidia-smi ``` 如果成功运行,并显示了GPU的信息,那么NVIDIA-Docker已成功安装并可以在离线环境中使用了。 请注意,离线安装可能需要手动处理依赖项,例如安装适当的驱动程序和库文件。因此,在进行离线安装之前,请确保已阅读官方文档并了解所需的所有依赖项。 ### 回答2: 在离线环境下安装NVIDIA-Docker,我们需要进行以下步骤: 1. 准备离线环境所需的安装包和资源: - NVIDIA-Docker安装包(.run文件) - NVIDIA的驱动程序(.run文件) - Docker安装包(.tar文件) - Docker镜像所需的显卡驱动(可从其他在线环境中提取) 2. 在离线机器上安装依赖项: - 首先,确保离线机器的操作系统为CentOS,并且已经安装了gcc、kernel-devel和kernel-headers等依赖包。 - 然后,通过运行NVIDIA驱动程序的.run文件来安装NVIDIA驱动。 3. 安装Docker: - 将Docker的.tar文件复制到离线机器上的目录中。 - 使用`tar -xvf`命令解压文件。 - 将解压后的文件夹复制到/usr/bin目录下,确保Docker可执行文件可用。 4. 安装NVIDIA-Docker: - 将离线机器连接到互联网,下载并复制NVIDIA-Docker安装包(.run文件)到离线机器上。 - 运行`chmod +x`命令赋予文件可执行权限。 - 运行`.run`文件来安装NVIDIA-Docker。 5. 配置NVIDIA-Docker: - 在/etc/docker/daemon.json文件中添加`"runtimes": {"nvidia": {"path": "/usr/bin/nvidia-container-runtime","runtimeArgs": []}}`,以告知Docker使用NVIDIA运行时。 - 通过运行`systemctl restart docker`重新启动Docker服务。 6. 验证安装: - 运行`docker run --gpus all nvidia/cuda:11.0-base nvidia-smi`命令,如果成功显示GPU信息,则表示安装成功。 需要注意的是,由于离线环境无法直接从互联网下载所需的安装包和资源,因此需要从其他在线环境中提取,并在离线机器上复制和安装。另外,要根据具体的硬件和软件版本来选择正确的驱动程序和安装包。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值