配置VS Code + Ubuntu服务器 + Docker + Python:远程调试Debug

0.背景和原理

背景:

  1. 有服务器且在服务器中安装了Docker
  2. 使用VS Code进行远程Debug

原理:

使用SSH来实现

1.Docker容器配置

以新建tensorflow的Docker容器为例

  1. 拉取tensorflow的镜像
    使用指令
sudo docker pull tensorflow/tensorflow:latest-gpu

即可拉取tensorflow-gpu的镜像

使用指令

sudo docker image ls

即可查看当前Docker中保存的全部镜像

docker连接远程 docker怎么远程debug_docker

  1. 新建容器
    新建容器的指令如下
sudo docker run --gpus all -it --name new-tf2 -p 1234:22 -v /home/yons/new:/home/new -v /media/yons/ubuntu:/home/media tensorflow/tensorflow:latest-gpu /bin/bash

指令中:

  1. --gpus all表示该容器使用服务器的所有gpu,或使用--gpus 'device=0'来指定某一个GPU
  2. -it表示该容器使用终端进行交互式操作
  3. --name new-tf2表示对该容器命名为“new-tf2”
  4. -p 1234:22表示将容器的22端口映射到宿主机的13044端口
  5. -v /home/yons/new:/home/new表示将本地目录“/home/yons/new”映射到容器的“/home/new”中
    -v /media/yons/ubuntu:/home/media/media/yons/ubuntu是本机中机械硬盘(第二块硬盘)的地址,该指令表示将第二块硬盘的地址映射到/home/media中
  6. tensorflow/tensorflow:latest-gpu表示使用该镜像,/bin/bash表示使用系统的终端软件

注意!容器的本地地址映射和命名是十分重要的!

新建其他的容器也基本是这个流程,找到正确的pull对应镜像方法最重要,得到镜像之后按照第二步的方法执行即可

建立容器后会直接进入容器,我们在/home目录下就可以看到映射的两个文件夹

docker连接远程 docker怎么远程debug_docker连接远程_02

  1. 进入容器,修改容器的root用户密码
    passwd
  2. 更新apt,并安装openssh-server
    apt-get update

这里的报错是针对nvidia的库,对安装openssh-server没有影响

apt-get install openssh-server

  1. 修改ssh的配置文件,使其允许root用户登录
    Vi /etc/ssh/sshd_config

若提示没有vi指令,则安装vimapt-get install vim

vim的使用方式建议百度,或者使用nano等都行

  1. PermitRootLogin项后面的参数修改为yes
  2. 启动SSH服务并测试连接
    service ssh start

2.VS Code配置

  1. 安装插件Remote SSHPython
  2. 点击左下角的箭头,在对话框中选择Open SSH Configuration File,选择第一个config文件进行修改

docker连接远程 docker怎么远程debug_vscode_03

docker连接远程 docker怎么远程debug_python_04

  1. 修改文件,添加上容器的SSH设置
Host 123
	HostName 192.168.1.3
	Port 1234
	User root

Host表示建立的连接的名称,自定义即可

HostName表示服务器的ip

port表示连接的端口,这里填上新建容器时映射的服务器的端口号

User表示登录的用户

  1. 点击左侧的Remote Explore,可以看到已经有了远程服务器123
    右键服务器123,任意选择一个即可

Connect to Host in Current Window表示在当前窗口打开

Connect to Host in New Window表示在新窗口中打开连接


在弹出窗口中选择Linux,在下方的TERMINAL中输入yes,并输入之前设置的root用户的密码

docker连接远程 docker怎么远程debug_vscode_05

在输入完密码之后,VS Code会在容器中安装一些必要的组件,稍等片刻即可

  1. 进入Explore,选择Open Folder,在弹出对话框内找到你的项目路径并选择OK
    如:/home/admin/project1/

在TERMINAL中会提示再输入一次密码

  1. 进入VS Code的扩展,可以看到提示:将Python安装到SSH:123
  2. 使用Shift + Ctrl + P,在对话框中找到Python: Select interpreter并选择,在展开的选项中找到你需要用的Python路径

docker连接远程 docker怎么远程debug_docker连接远程_06

  1. 点击左侧的Run and Debug,选择create a luanch.json

在弹出窗口中选择Python File,就会进入launch.json文件

docker连接远程 docker怎么远程debug_ubuntu_07

  1. 在代码中设置断点,即可开始快乐Debug