內(nèi)含一整套操作,從設(shè)置容器到遠(yuǎn)程連接。
操作環(huán)境:
服務(wù)器:ubuntu 20.04
本機(jī):win10
IDE:pycharm 專(zhuān)業(yè)版
1.nvidia驅(qū)動(dòng)下載
下載驅(qū)動(dòng)很容易的,下面我們來(lái)介紹一種最簡(jiǎn)單的方法。
sudo ubuntu-drivers devices #顯示可用驅(qū)動(dòng)
sudo apt install nvidia-driver-525 #我這里選擇的是525,大家按需操作即可
reboot # 需要重啟一下
nvidia-smi #驗(yàn)證是否有驅(qū)動(dòng)
?
?插個(gè)小曲,刪除驅(qū)動(dòng)代碼
?sudo apt-get remove --purge nvidia*
?2.docker下載??參考
參考網(wǎng)站里有很詳細(xì)的解說(shuō),我們只再列出需要的代碼。
sudo apt update #更新軟件包
apt-get install ca-certificates curl gnupg lsb-release #安裝docker依賴(lài)
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 #配置用戶(hù)組(可選)可以不用sudo命令了,重啟生效
systemctl start docker #運(yùn)行
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 #顯示拉取鏡像
?當(dāng)輸入這個(gè)命令時(shí) sudo docker run hello-world ,出現(xiàn)下圖就說(shuō)明可以了。
?注意:第一次udo docker run hello-world這個(gè)時(shí),顯示docker鏡像沒(méi)有hello-world,第二次拉取的時(shí)候才有,如圖。不知道為什么。。。
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守護(hù)程序配置
$ sudo apt-get install -y nvidia-docker2
$ sudo pkill -SIGHUP dockerd
4.拉取cuda鏡像(參考)
主要說(shuō)明以下幾個(gè)版本的不同之處,其他的按需索取即可,推薦devel版。docker拉取cuda官網(wǎng)
nvidia/cuda:11.1.1-cudnn8-runtime:
- 這是一個(gè)運(yùn)行時(shí)鏡像,適用于在已安裝 CUDA 11.1.1 和 cuDNN 8 的環(huán)境中運(yùn)行深度學(xué)習(xí)應(yīng)用程序。該鏡像包含運(yùn)行時(shí)所需的庫(kù)和工具,但不包含開(kāi)發(fā)工具或頭文件。
nvidia/cuda:11.1.1-cudnn8-devel:
- 這是一個(gè)開(kāi)發(fā)鏡像,適用于在已安裝 CUDA 11.1.1 和 cuDNN 8 的環(huán)境中進(jìn)行深度學(xué)習(xí)模型的開(kāi)發(fā)。該鏡像包含了編譯和構(gòu)建深度學(xué)習(xí)代碼所需的開(kāi)發(fā)工具、頭文件和庫(kù)。
nvidia/cuda:11.1.1-base:
- 這是一個(gè)基礎(chǔ)鏡像,提供了 CUDA 11.1.1 的基本環(huán)境,但沒(méi)有安裝 cuDNN 庫(kù)。它可能適用于一些不依賴(lài) cuDNN 的 CUDA 應(yīng)用場(chǎng)景,或者用于構(gòu)建自定義的 CUDA 環(huán)境。
nvidia/cuda:11.1.1-cudnn8-devel-ubuntu20.04:?
- 這個(gè)版本在基礎(chǔ)的 CUDA 11.1.1 和 cuDNN 8 的開(kāi)發(fā)環(huán)境基礎(chǔ)上,還基于 Ubuntu 20.04 操作系統(tǒng)。這使得該鏡像不僅包含了 CUDA 和 cuDNN 的開(kāi)發(fā)工具,還提供了 Ubuntu 20.04 操作系統(tǒng)的環(huán)境。
?5.使用docker鏡像,創(chuàng)建環(huán)境
#進(jìn)入鏡像,一定要有--gpus才能使用顯卡
sudo docker run --gpus all -it nvidia/cuda:11.6.2-cudnn8-devel-ubuntu20.04?
#如果有多顯卡,使用部分可以用 --gpus device=0,1這個(gè)設(shè)置哦
sudo docker run --gpus device=0,1 -it nvidia/cuda:11.6.2-cudnn8-devel-ubuntu20.04?
exit #退出鏡像
5.1安裝anaconda
這一部分看了網(wǎng)上很多的教程,看的我頭暈,也走了不少?gòu)澛罚@個(gè)應(yīng)該是我總結(jié)出來(lái)的最簡(jiǎn)過(guò)程。
apt-get upgrate or apt update #更新軟件包
wget https://repo.anaconda.com/archive/Anaconda3-2021.11-Linux-x86_64.sh #下載anaconda #有可能沒(méi)有這個(gè)包 apt-get install wget 即可
bash Anaconda3-2021.11-Linux-x86_64.sh
sha256sum Anaconda3-2021.11-Linux-x86_64.sh #運(yùn)行 sha256sum 命令來(lái)驗(yàn)證哈希值
source ~/.bashrc #激活安裝
conda info #查看信息
?安裝文件
?下載anaconda
?路徑可自定義
?conda init 【yes】? 忘記選了?沒(méi)事,下面教你解決
?
?這里找不到conda命令。
vim ~/.bashrc #這里可能也沒(méi)有vim,下載一個(gè)
?打開(kāi)后在文件末尾加上
export PATH="/root/anaconda3/bin:$PATH" #該路徑實(shí)際為你的真實(shí)路徑
source ~/.bashrc #更新配置
?
?5.2創(chuàng)建pytorch環(huán)境
conda create -n myenv python=3.xx
?
?創(chuàng)建完環(huán)境需要激活,可是上面的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環(huán)境一致哦,官網(wǎng)
?這樣就下載好了
?5.3打包容器
先exit退出當(dāng)前鏡像。
docker ps -a #查看有哪些容器
docker commit contain_id newimagename
docker images #看看新的鏡像有沒(méi)有在
?好的,下面進(jìn)去就好了,環(huán)境什么的,都還在
?
?
6.pycharm遠(yuǎn)程連接遠(yuǎn)端服務(wù)器docker中的conda環(huán)境參考教程
插播一句: pycharm必須是專(zhuān)業(yè)版哦,社區(qū)版沒(méi)有這個(gè)功能。
6.1 端口映射
如果有非局域網(wǎng)需求的,先看這里哦。兩篇文章結(jié)合一起看,問(wèn)題解決一大半。pycharm 非局域網(wǎng)下 遠(yuǎn)程連接服務(wù)器docker中的conda環(huán)境-CSDN博客
ssh遠(yuǎn)程連接服務(wù)器的端口是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:深度學(xué)習(xí)任務(wù)一般掛兩個(gè)文件夾,一個(gè)存放數(shù)據(jù)集,一個(gè)放代碼。
- -p 端口映射,10022(服務(wù)器端口)? 22(docker)端口。
- --ipc=host 后面這個(gè)是容器的id? ?e1ff5e8cfa9f
?上面是test現(xiàn)在是test4,其中走的都是彎路阿!
?由于anaconda默認(rèn)下載路徑是root目錄下,大家適當(dāng)放權(quán)阿?
chmod -R 777 dir #文件夾下文件及目錄全部修改權(quán)限
chmod 777 filename #修改文件權(quán)限
注 777或者775都是可以的
?
docker環(huán)境里會(huì)有anaconda的一系列文件但是只打開(kāi)文件、你會(huì)的發(fā)現(xiàn)空空如也,可能是因?yàn)閐ocker環(huán)境不保存在實(shí)際目錄下,只能通過(guò)映射或者容器內(nèi)才能有文件。?
?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遠(yuǎn)程連接不了哦
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
?
?像這樣帶有端口號(hào)的就成功拉
6.3進(jìn)入容器,查看并編輯信息。
xxfs@xxfs:~ $ docker exec -it 429358b64bf3 /bin/bash #進(jìn)入容器
(base) root@429358b64bf3:/# hostname -i #獲取容器內(nèi)的ip地址
(base) root@429358b64bf3:/# vim /etc/ssh/sshd_config # 設(shè)置配置文件 PermitRootLogin yes
(base) root@429358b64bf3:/# service ssh restart
* Restarting OpenBSD Secure Shell server sshd [ OK ]
(base) root@429358b64bf3:/# exit
?
?6.4ssh連接
退出當(dāng)前容器,看看能否鏈接上。在設(shè)置完P(guān)ermitRootLogin yes后,如果還登不上去,你就嘎該思索一下,是不是用服務(wù)器的密碼阿。別忘記了,上面修改過(guò)密碼了哦。此時(shí)密碼是123,你也可以自己設(shè)置密碼哦,用這個(gè)命令或者passwd
(base) root@429358b64bf3:~# echo 'root:123' | chpasswd
?
?這次輸入123,可以進(jìn)去拉
?6.5?pycharm遠(yuǎn)程連接? ?參考教程
到這里docker容器的任務(wù)暫時(shí)結(jié)束了,下面就是配置pycharm拉。
首先菜單欄--》Tools--》Deployment--》Configuration
?點(diǎn)擊右上角加號(hào)選擇SFTP,輸入名字
?
?
?然后到了這個(gè)頁(yè)面,點(diǎn)擊三個(gè)點(diǎn),然后
?這樣就是可以連上啦
?apply應(yīng)用就可以了。
?
?然后ssh遠(yuǎn)程連接就好了
?然后一路next,鏈接到python解釋器就好了
?然后添加python解釋器,設(shè)置目錄
?這邊就可以自行上傳文件了,upload就可以了
?比如說(shuō)這個(gè),上傳一個(gè)a.py代碼,是在服務(wù)器運(yùn)行,但是是顯示在自己的終端。很方便
?6.6pytharm遠(yuǎn)程下載包
?大家覺(jué)得有用可以點(diǎn)贊關(guān)注哦!文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-764612.html
文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-764612.html
到了這里,關(guān)于nvidia驅(qū)動(dòng) && docker鏡像cuda ,anaconda,pytorch下載ubuntu20.04&&pycharm遠(yuǎn)程連接遠(yuǎn)端服務(wù)器docker中的conda環(huán)境(完整操作)的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!