1. Docker SSH配置
1.1 拉取镜像后,执行:
sudo docker run --runtime=nvidia -it -p 8023:22 --ipc=host --name="torch" -v /home/**:/home/** torch1.5 /bin/bash
其中,-p 8023:22
:设置端口映射,将tcp22端口转发到8023(后续将通过8023端口对容器进行访问),与已占用端口不冲突的情况下可以自由设置;--ipc=host
:用于设置主机与容器共享内存;-v /home/**/:/home/**/
:将服务器目录与容器目录进行共享,为方便记忆,通常将两个目录名设置为一样;torch1.5
:拉取的镜像名称。
1.2 启动并进入容器:
sudo docker start torch
sudo docker attach torch
1.3 设置 root 账户密码:
passwd root
1.输入密码
2.再次输入密码
1.4 安装openssh:
apt update
apt install -y openssh-server
1.5 ssh配置:
vim /etc/ssh/sshd_config
修改SSH配置文件,去掉以下选项的#注释(如找不到对应项,可直接复制到文件中):
Port 22 #开启22端口
PermitRootLogin yes #允许root用户使用ssh登录
RSAAuthentication yes #启用 RSA 认证
PubkeyAuthentication yes #启用公钥私钥配对认证方式
AuthorizedKeysFile .ssh/authorized_keys .ssh/authorized_keys2 #公钥文件路径
1.6 修改完成后,重新启动ssh服务:
service ssh restart
1.7 验证端口映射是否正确:
sudo docker port [ID] 22
输出如下,表示配置成功
**@master:~$ sudo docker port torch 22
0.0.0.0:8023
1.8 设置进入容器后,自动启动ssh服务:
尽管容器内安装了ssh服务,但每次关闭容器重启后,ssh将恢复停止状态,每次进入容器时需要重新启动ssh服务:service ssh restart
,否则远程连接将失败:
在这里,我们可以利用脚本来实现ssh服务的自动启动:
vim /root/startup_run.sh
写入:
#!/bin/bash
LOGTIME=$(date "+%Y-%m-%d %H:%M:%S")
echo "[$LOGTIME] startup run..." >>/root/startup_run.log
service ssh start >>/root/startup_run.log
#service mysql start >>/root/startup_run.log
添加文件权限:
chmod +x /root/startup_run.sh
打开启动文件:
vim /root/.bashrc
把脚本命令添加到文件末尾:
# startup run
if [ -f /root/startup_run.sh ]; then
/root/startup_run.sh
fi
最后,立即生效.bashrc:
source ~/.bashrc
至此实现了ssh的自动启动,可以退出、重新进入容器后进行ssh连接测试。
2. VS-Code配置
2.1 安装Remote Development
打开VS code,打开扩展(ctr+shift+X)查找并安装Remote Development
2.2 打开查找栏(ctr+shift+p),输入remote-ssh,选择open Configuration file
2.3 进行基础配置:
2.4 打开远程资源管理器,选择刚才配置好的host进行SSH连接
2.5 输入root账户密码:
连接成功:
3. 配置vscode debugger
3.1
打开扩展(Ctrl + Shift + X),在商店中搜索“Python”,选择“Python extension for Visual Studio Code”并安装在目标容器中,然后重启VSCode。
3.2
按Ctrl + Shift + P,输入“python: select interpreter”,点击所需要的python解析器。
3.3
打开容器目录,即可进行代码的调试
参考资料:
Python基础——VScode + docker进行代码调试
VSCode+Docker: 打造最舒适的深度学习环境
VSCode Remote 体验 | 远程Linux环境开发真香
SSH连接docker中的container
Docker-SSH连接docker容器
linux docker 中实现某些程序段开机自启动
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。