2021-05-14

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 中实现某些程序段开机自启动

你可能感兴趣的:(2021-05-14)