Refer to

前置条件:

远程服务器已完成docker安装,并启动容器。

1 启动容器:

docker run -it -d --gpus all --name UnitCls --shm-size="10g" --restart="on-failure" -v /home/knowledge/UnitCls:/workspace/UnitCls -p 8010:22  pytorch/pytorch:1.9.1-cuda11.1-cudnn8-devel /bin/bash

-it表示交互式运行容器;
–name指定容器名;
–shm-size设置的是共享内存大小,根据需要设置,如果不设置的话,默认64M,训练深度学习模型的时候dataloader会报错提示共享内存不足;
-p是端口映射(主机端口:容器端口),-v是地址映射(主机文件夹:容器文件夹,注意必须用绝对路径);
镜像的RESPOSITORY:TAG;
进入容器后启动bash

这里的远程服务器端口号为8010,docker容器对外映射的端口号为22。

2 配置容器

2.1 进入容器

stu@XXX:~$ docker restart "容器名字/ID"
stu@XXX:~$ docker exec -it "容器名字/ID" /bin/bash  
#进入容器 (exit容器时候不影响容器运行,也可以:docker attach "容器名字/ID" 但是exit会停止容器)
#进入到容器 开始一波install 后面远程连接要用

2.2 完成容器ssh等相关配置

配置容器的ssh和vim等工具

root@c19bdcee0db9:/workspace$ apt-get update
root@c19bdcee0db9:/workspace$ apt-get install openssh-server
root@c19bdcee0db9:/workspace$ apt-get install openssh-client
root@c19bdcee0db9:/workspace$ apt-get install ssh
root@c19bdcee0db9:/workspace$ apt-get install vim

设置ssh密码, 注意:vscode连接docker时的密码,就是这里配置的密码,而不是连接远程服务器的密码。

root@c19bdcee0db9:/workspace$ passwd 
#创建密码 回头远程连接docker的用的是这个密码!!

设置ssh配置

root@c19bdcee0db9:/workspace$ vim /etc/ssh/sshd_config #修改ssh连接的设置,修改下面几项配置
PermitRootLogin yes 
port 22 #这个端口号一定要写创建容器时候写的 参数第二个端口号! 
PubkeyAuthentication yes 
PasswordAuthentication yes

2.3 启动docker中的ssh

在docker容器中执行:

root@c19bdcee0db9:/workspace$ /etc/init.d/ssh restart
 * Restarting OpenBSD Secure Shell server sshd    
root@c19bdcee0db9:/workspace$ /etc/init.d/ssh status
 * sshd is running

注意:如果关掉这个docker容器,要记得重新运行 ssh : /etc/init.d/ssh restart

本地电脑上可以测试一下连接服务器到这个docker(没有测试成功):

ssh root@xx.xx.xx.xx -p 8010
#docker进去的root (不要用登录服务器的账户名 而是服务器中docker里面的账户名) -p 后面是端口号 和vim修改的不一样

3 vscode配置

打开vscode的.ssh\config输入:

Host "Name" #名字可以取 不影响连接
    HostName xx.xx.xx.xx #服务器ip 地址
    Port 8010 #服务器docker的端口
    User root #docker进去的root (**不要用登录服务器的账户名** 而是服务器中docker里面的账户名)

!!!不要用登录服务器的账户名

4 选择解释器

按下shift+command+p键呼出对话框,选择解释器,不知道是哪个的话,可以都试一遍

docker默认远程端口 docker怎么远程debug_docker


docker默认远程端口 docker怎么远程debug_端口号_02