配置docker+vscode远程连接
- 服务器端
- docker配置(pytorch+gpu)
- 拉取镜像
- 创建并运行容器
- docker配置
- 换源(可选)
- 安装ssh
- 安装git(可选)
- vscode配置
- 安装插件
- Remote - SSH
- 其它插件
- 可能出现的问题
- 其它常用命令
- scp传送文件
- docker相关
服务器端
docker配置(pytorch+gpu)
拉取镜像
- 查询服务器的cuda版本
nvcc -V
- 去官网上查找自己服务器对应的cuda版本镜像,这里用的是
1.9.1-cuda11.1-cudnn8-devel
docker pull pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel
- 查看已经拉取的镜像
docker images
创建并运行容器
- 设置容器名称为test,允许使用服务器的所有gpu,端口映射从1234到22(22是ssh的端口,不能改动,1234随便选个不被占用的就行),文件夹映射从/data/test到/data,镜像为上一步拉取的pytorch镜像
docker run -it --name test --gpus all -p 1234:22 -v /data/test:/data -d pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel
此时用ssh连接时设置端口为1234,即可直接远程连接到docker中。服务器的/data/test文件夹中的所有内容全部映射到docker中的/data文件夹下 - 启动容器
docker start test
- 进入容器
docker attach test
或docker exec -it test /bin/bash
- 查看gpu是否可用
nvidia-smi
- 测试pytorch gpu是否可用 (请确认在conda的base环境下操作)
python # 进入python环境
import torch
torch.cuda.is_available()
若输出为True,则说明运行正常,docker的pytorch-gpu配置完成
docker配置
安装vim:apt update && apt install vim
换源(可选)
若修改为清华源,可在vim修改文件时选择清华镜像站中提供的文本进行替换。注意自己服务器的操作系统版本
cp /etc/apt/sources.list /etc/apt/sources1.list
vim /etc/apt/sources.list
apt update && apt upgrade
安装ssh
- 拉取软件包
apt-get install openssh-server
- 设置远程连接密码。最好不为空
passwd root
- 完成ssh相关设置
vim /etc/ssh/sshd_config
直接在文件中添加下面两行即可
PermitRootLogin yes
UsePAM no
- 重启ssh
/etc/init.d/ssh restart
- 设置每次开启docker时启动ssh
echo 'service ssh start' >> ~/.bashrc
- 设置无密码远程登陆
在本地电脑上,打开终端,运行ssh-keygen -t rsa
复制本地电脑上~/.ssh/id_rsa.pub
中的信息至服务器的~/.ssh/authorized_keys
文件中(这里建议用scp复制过去之后使用>>输入cat local_id.pub >> ~/.ssh/authorized_keys
)
安装git(可选)
- 拉取软件包
apt install git
- 基础设置。示例github账号为test,邮箱为test@qq.com
git config --global user.name 'test'
git config --global user.email 'test@qq.com'
- 生成ssh密钥
ssh-keygen -t rsa -C 'test@qq.com'
- 将密钥添加至github账户中
cat ~/.ssh/id_rsa.pub
- 将github的IP记录到docker中
ssh -T git@github.com
vscode配置
安装插件
Remote - SSH
- 直接从vscode中自带的扩展商店中下载Remote - SSH
- 设置ssh连接
选择左侧的远程资源管理器(调试下面),选择SSH Targets,鼠标移动过去,点击加号,输入ssh root@ip -p 1234
,(自行替换ip为服务器ip)在弹出的文件中选择~/.ssh/config
,此时可以发现左侧的远程资源管理器中增加了你的服务器地址。这时打开~/.ssh/config
可以看见Host、HostName、Port、User。Host可以备注为远程服务器的名称,HostName为ip地址,Port为端口(仅包含数字),User为用户名root。 - 打开工作区
文件-打开文件夹-选择你的工程所在文件夹 - 此时切换到资源管理器(左侧列表第一个)即可看到文件夹中的内容
- 注意,要设置python解释器为conda环境中包含pytorch的那个
ctrl+shift+p,在输入框中输入python:select interpreter
,选择base环境中的python/opt/conda/bin/python
其它插件
- Python
- Code Runner(可选)
- GitLens(可选)
- Todo Tree(可选)
- Chinese (Simplified)(可选)
- Rainbow CSV(可选)
- 彩虹括号(忘记叫啥名字了)(可选)
可能出现的问题
- pip报错
修改~/.pip/pip.conf
(没有就创建一个), 内容如下:
[global]
index-url = https://pypi.tuna.tsinghua.edu.cn/simple
- 环境变量出错(忘记报错是什么了)
echo 'export $(cat /proc/1/environ |tr '\0' '\n' | xargs)' >> /etc/profile
- 不记得了,想起来再写
其它常用命令
scp传送文件
直接从Mobaxterm的窗口往里面拖大概率报错说没有权限……scp -P 1234 本机文件 root@ip:/data
自行替换ip、端口和文件位置。
(不过说实话命令不是很好用,建议下载一个winscp
docker相关
- 创建容器:docker run -it --name test --gpus all -p 1234:22 -v /data/test:/data -d pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel
- 启动容器:docker start test
- 进入多终端docker:docker exec -it test /bin/bash
- 进入运行中的容器:docker attach test
- 停止容器:docker stop test
- 重启容器:docker restart test
- 显示所有镜像:docker images
- 删除容器:docker rm test
- 显示所有容器:docker ps -a
- 导出容器(报错 无权限):docker export test > testdocker.tar
- 导入容器为镜像:docker import testdocker.tar testdocker:1.0
- 导出镜像:docker save test > testdocker.tar
- 导入镜像:docker load < testdocker.tar