内含一整套操作,从设置容器到远程连接。
操作环境:
服务器:ubuntu 20.04
本机:win10
IDE:pycharm 专业版
1.nvidia驱动下载
下载驱动很容易的,下面我们来介绍一种最简单的方法。
sudo ubuntu-drivers devices #显示可用驱动
sudo apt install nvidia-driver-525 #我这里选择的是525,大家按需操作即可
reboot # 需要重启一下
nvidia-smi #验证是否有驱动
插个小曲,删除驱动代码
sudo apt-get remove --purge nvidia*
2.docker下载 参考
参考网站里有很详细的解说,我们只再列出需要的代码。
sudo apt update #更新软件包
apt-get install ca-certificates curl gnupg lsb-release #安装docker依赖
curl -fsSL http://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo apt-key add - #添加Docker官方GPG密钥
sudo add-apt-repository "deb [arch=amd64] http://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" #添加Docker软件源
apt-get install docker-ce docker-ce-cli containerd.io #安装docker
sudo usermod -aG docker $USER #配置用户组(可选)可以不用sudo命令了,重启生效
systemctl start docker #运行
apt-get -y install apt-transport-https ca-certificates curl software-properties-common #安装工具
service docker restart #重启docker
sudo docker run hello-world #拉取hello-world
sudo docker images #显示拉取镜像
当输入这个命令时 sudo docker run hello-world ,出现下图就说明可以了。
注意:第一次udo docker run hello-world这个时,显示docker镜像没有hello-world,第二次拉取的时候才有,如图。不知道为什么。。。
3.安装nvidia-docker
$ curl -s -L https://nvidia.github.io/nvidia-docker/gpgkey | \
sudo apt-key add -
$ distribution=$(. /etc/os-release;echo $ID$VERSION_ID)
$ curl -s -L https://nvidia.github.io/nvidia-docker/$distribution/nvidia-docker.list | \
sudo tee /etc/apt/sources.list.d/nvidia-docker.list
$ sudo apt-get update
# 安装nvidia-docker2软件包并重新加载docker守护程序配置
$ sudo apt-get install -y nvidia-docker2
$ sudo pkill -SIGHUP dockerd
4.拉取cuda镜像(参考)
主要说明以下几个版本的不同之处,其他的按需索取即可,推荐devel版。docker拉取cuda官网
nvidia/cuda:11.1.1-cudnn8-runtime:
- 这是一个运行时镜像,适用于在已安装 CUDA 11.1.1 和 cuDNN 8 的环境中运行深度学习应用程序。该镜像包含运行时所需的库和工具,但不包含开发工具或头文件。
nvidia/cuda:11.1.1-cudnn8-devel:
- 这是一个开发镜像,适用于在已安装 CUDA 11.1.1 和 cuDNN 8 的环境中进行深度学习模型的开发。该镜像包含了编译和构建深度学习代码所需的开发工具、头文件和库。
nvidia/cuda:11.1.1-base:
- 这是一个基础镜像,提供了 CUDA 11.1.1 的基本环境,但没有安装 cuDNN 库。它可能适用于一些不依赖 cuDNN 的 CUDA 应用场景,或者用于构建自定义的 CUDA 环境。
nvidia/cuda:11.1.1-cudnn8-devel-ubuntu20.04:
- 这个版本在基础的 CUDA 11.1.1 和 cuDNN 8 的开发环境基础上,还基于 Ubuntu 20.04 操作系统。这使得该镜像不仅包含了 CUDA 和 cuDNN 的开发工具,还提供了 Ubuntu 20.04 操作系统的环境。
5.使用docker镜像,创建环境
#进入镜像,一定要有--gpus才能使用显卡
sudo docker run --gpus all -it nvidia/cuda:11.6.2-cudnn8-devel-ubuntu20.04
#如果有多显卡,使用部分可以用 --gpus device=0,1这个设置哦
sudo docker run --gpus device=0,1 -it nvidia/cuda:11.6.2-cudnn8-devel-ubuntu20.04
exit #退出镜像
5.1安装anaconda
这一部分看了网上很多的教程,看的我头晕,也走了不少弯路,这个应该是我总结出来的最简过程。
apt-get upgrate or apt update #更新软件包
wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh #下载anaconda #有可能没有这个包 apt-get install wget 即可
bash Anaconda3-2021.11-Linux-x86_64.sh
sha256sum Anaconda3-2021.11-Linux-x86_64.sh #运行 sha256sum 命令来验证哈希值
source ~/.bashrc #激活安装
conda info #查看信息
安装文件
下载anaconda
路径可自定义
conda init 【yes】 忘记选了?没事,下面教你解决
这里找不到conda命令。
vim ~/.bashrc #这里可能也没有vim,下载一个
打开后在文件末尾加上
export PATH="/root/anaconda3/bin:$PATH" #该路径实际为你的真实路径
source ~/.bashrc #更新配置
5.2创建pytorch环境
conda create -n myenv python=3.xx
创建完环境需要激活,可是上面的conda init忘记选了!
输入这几行就好了
root@2aa338b11794:/dockerfile# conda info | grep -i "zncuda11.6"
root@2aa338b11794:/dockerfile# source ~/anaconda3/etc/profile.d/conda.sh
root@2aa338b11794:/dockerfile# conda activate zncuda11.6
下面大家就可以下载torch了,记得和镜像的cuda环境一致哦,官网
这样就下载好了
5.3打包容器
先exit退出当前镜像。
docker ps -a #查看有哪些容器
docker commit contain_id newimagename
docker images #看看新的镜像有没有在
好的,下面进去就好了,环境什么的,都还在
6.pycharm远程连接远端服务器docker中的conda环境参考教程
插播一句: pycharm必须是专业版哦,社区版没有这个功能。
6.1 端口映射
如果有非局域网需求的,先看这里哦。两篇文章结合一起看,问题解决一大半。pycharm 非局域网下 远程连接服务器docker中的conda环境-CSDN博客
ssh远程连接服务器的端口是22,docker中的ssh端口也是22所以就需要端口映射,
docker run --name test4 -it -v /home/xxfs/project/test4:/yolov5 -v /home/xxfs/project/dataset_test4:/dataset -p 10022:22 --gpus all --ipc=host e1ff5e8cfa9f
- -v:深度学习任务一般挂两个文件夹,一个存放数据集,一个放代码。
- -p 端口映射,10022(服务器端口) 22(docker)端口。
- --ipc=host 后面这个是容器的id e1ff5e8cfa9f
上面是test现在是test4,其中走的都是弯路阿!
由于anaconda默认下载路径是root目录下,大家适当放权阿
chmod -R 777 dir #文件夹下文件及目录全部修改权限
chmod 777 filename #修改文件权限
注 777或者775都是可以的
docker环境里会有anaconda的一系列文件但是只打开文件、你会的发现空空如也,可能是因为docker环境不保存在实际目录下,只能通过映射或者容器内才能有文件。
6.2ssh配置
(base) root@429358b64bf3:~# apt update
(base) root@429358b64bf3:~# apt install -y openssh-server
(base) root@429358b64bf3:~# mkdir /var/run/sshd
mkdir: cannot create directory '/var/run/sshd': File exists
(base) root@429358b64bf3:~# echo 'root:123' | chpasswd
(base) root@429358b64bf3:~# sed -i 's/PermitRootLogin prohibit-password/PermitRootLogin yes/' /etc/ssh/sshd_config
(base) root@429358b64bf3:~# sed 's@session\s*required\s*pam_loginuid.so@session optional pam_loginuid.so@g' -i /etc/pam.d/sshd
(base) root@429358b64bf3:~# echo "export VISIBLE=now" >> /etc/profile
(base) root@429358b64bf3:~# service ssh restart
* Restarting OpenBSD Secure Shell server sshd
还需要下载openssh-server哦,要不然pycharm远程连接不了哦
apt-get install openssh-server
vim /etc/ssh/sshd_config #PasswordAuthentication yes # 改成yes
service ssh --full-restart
exit退出容器,看看端口是否映射成功
xxfs@xxfs:~ $ sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
429358b64bf3 e1ff5e8cfa9f "/opt/nvidia/nvidia_…" 17 minutes ago Exited (0) 7 minutes ago test4
xxfs@xxfs:~ $ docker start 429358b64bf3
429358b64bf3
xxfs@xxfs:~ $ sudo docker port 429358b64bf3
22/tcp -> 0.0.0.0:10022
22/tcp -> [::]:10022
像这样带有端口号的就成功拉
6.3进入容器,查看并编辑信息。
xxfs@xxfs:~ $ docker exec -it 429358b64bf3 /bin/bash #进入容器
(base) root@429358b64bf3:/# hostname -i #获取容器内的ip地址
(base) root@429358b64bf3:/# vim /etc/ssh/sshd_config # 设置配置文件 PermitRootLogin yes
(base) root@429358b64bf3:/# service ssh restart
* Restarting OpenBSD Secure Shell server sshd [ OK ]
(base) root@429358b64bf3:/# exit
6.4ssh连接
退出当前容器,看看能否链接上。在设置完PermitRootLogin yes后,如果还登不上去,你就嘎该思索一下,是不是用服务器的密码阿。别忘记了,上面修改过密码了哦。此时密码是123,你也可以自己设置密码哦,用这个命令或者passwd
(base) root@429358b64bf3:~# echo 'root:123' | chpasswd
这次输入123,可以进去拉
6.5 pycharm远程连接 参考教程
到这里docker容器的任务暂时结束了,下面就是配置pycharm拉。
首先菜单栏--》Tools--》Deployment--》Configuration
点击右上角加号选择SFTP,输入名字
然后到了这个页面,点击三个点,然后
这样就是可以连上啦
apply应用就可以了。
然后ssh远程连接就好了
然后一路next,链接到python解释器就好了
然后添加python解释器,设置目录
这边就可以自行上传文件了,upload就可以了
比如说这个,上传一个a.py代码,是在服务器运行,但是是显示在自己的终端。很方便
6.6pytharm远程下载包
大家觉得有用可以点赞关注哦!