VsCode调试远程服务器上面的Docker容器

第一步 VsCode 连接ssh

  1. 下载安装VsCode(Visual Studio Code),首次安装会提示你安装Chinese(Simplified)中文简体,安装完后重新打开就是汉化界面了。

  2. 在左边侧边栏找到扩展选项,然后安装Remote Development插件,里面包含了Remote SSH, WSL, Dev ContainersRemote - Tunnels四个插件。

  3. 安装后你的左边侧边栏就会出现远程资源管理器了,然后切换到远程(隧道/SSH),鼠标移到下面的SSH,就会出现一个+号了,点击一下+号。

  4. 提示需要输入ssh命令。输入示例:ssh root@xxx.xxx.xxx.xxx 即可。root是服务器用户名,xxx.xxx.xxx.xxx是远程ip地址。输入完后回车

  5. 回到刚刚到界面,点击图片刷新一下,就可以看到你刚刚输入的ip地址了。右键这个ip,选择在当前窗口中连接即可。

  6. 后面会让你输入密码,每次打开都要输入。可以参考一下附录ssh免密配置,强烈建议去配置一下,大概几分钟可以搞定,后续会方便很多。

第二步,启动容器服务

  1. 下面以trt2023复赛为例。在服务器终端,先clone一下你的代码,然后进入你的代码目录。
  2. 创建并后台启动docker容器:
ini 复制代码
docker run --gpus all \
  --name trt2023 \
  -d \
  --ipc=host \
  --ulimit memlock=-1 \
  --restart=always \
  --ulimit stack=67108864 \
  -v ${PWD}:/root/workspace/trt2023 \
  [镜像名称] sleep 8640000

第三步,VsCode连接容器

  1. VsCode侧边栏选择远程资源管理器,然后下拉框选择开发容器,点击一下刷新(如果没配置ssh免密,就需要输入一下密码)。

    xml 复制代码
    <p class="img-center"><img alt="image.png" isbindedload="true" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/425be9d27cbc45a7ba93ed7d635e8082~tplv-k3u1fbpfcp-zoom-1.image" width="718" /></p>
    </li>
    <li>选中刚刚到容器,选择<code>在当前窗口中附加</code>即可。
    <p class="img-center"><img alt="image.png" isbindedload="true" src="https://p3-juejin.byteimg.com/tos-cn-i-k3u1fbpfcp/ee5104ab4df34a4695dca942f70ff34a~tplv-k3u1fbpfcp-zoom-1.image" width="706" /></p>
    </li>
    <li>然后打开你刚刚映射的目录<code>/root/workspace/trt2023</code>即可。</li>
    <li>安装一下<code>Python</code>插件,即可开始享受愉快的编码调试过程了。</li>

其他

ssh免密登录配置
  1. 本机生成ssh key,一路回车即可。若本机已经生成过了,则可以忽略。

    ssh-keygen

  2. 复制本机公钥。

  • for Linux/Mac
bash 复制代码
cat ~/.ssh/id_rsa.pub
  • for Windows。去文件管理器,一般在C:\user\xxxx\.ssh目录下,如果看不到.ssh目录,则可能需要打开隐藏文件显示。然后用记事本打开id_rsa.pub文件,copy里面的内容即可。
  1. 连接到远程服务器(注意是连服务器,不是连服务器的容器)。然后做以下配置。
  • 创建.ssh目录,如果目录已经存在则可以忽略。
bash 复制代码
mkdir ~/.ssh
  • 看看authorized_keys文件是否存在(不存在可以用touch ~/.ssh/authorized_keys命令手动创建一个),并且观察其权限是否ok。
bash 复制代码
ls -lh ~/.ssh/authorized_keys
  • 输出下面这个说明是ok的,-rw说明是root用户可读可写,组用户和宾客用户都不行。
diff 复制代码
-rw------- 1 root root
  • 如果你实在不确定是不是ok,暴力一下,直接重新给他授权即可。
bash 复制代码
chmod 600 ~/.ssh/authorized_keys
  1. 将你之前复制的公钥粘贴到刚刚到授权文件里面。可以用下面的命令一键完成。
bash 复制代码
echo "你的公钥内容xxxx" >> ~/.ssh/authorized_keys
  1. 到这一步基本是ok了,如果不ok,则需要检查一下ssh配置。
  • 编辑ssh配置
bash 复制代码
vim /etc/ssh/sshd_config
  • 修改前
shell 复制代码
#StrictModes yes
#AuthorizedKeysFile .ssh/authorized_keys
PermitRootLogin prohibit-password
  • 修改后
bash 复制代码
StrictModes no
AuthorizedKeysFile .ssh/authorized_keys
PermitRootLogin yes
相关推荐
kyriewen18 小时前
别再 console.log 了:5 个 Chrome DevTools 调试技巧,用过就回不去了
前端·javascript·面试
IT_陈寒20 小时前
Python搞不定字符串编码?这破玩意坑我两小时!
前端·人工智能·后端
DigitalOcean21 小时前
Laravel 开发者已在 DigitalOcean 上开通超过 10 万台服务器
前端·laravel
星始流年21 小时前
从 Tool 到 Skill——基于 LangChain 的服务端Skill实现
前端·langchain·agent
李惟21 小时前
开源本地通信库,纯客户端 RPC,像聊天一样通信
前端
YAwu1121 小时前
深入解析 React 炫彩鼠标跟随标题组件:从坐标定位到动画性能
前端·react.js
GuWenyue21 小时前
排序效率低?5分钟吃透快速排序,性能飙升至O(nlogn)
前端·javascript·面试
OpenTiny社区21 小时前
🎨 看完 GenUI SDK 源码我悟了!
前端·vue.js·github
叁两21 小时前
前端转型AI Agent该如何学习?(前置篇)
前端·人工智能·node.js
何时梦醒1 天前
深入理解递归与快速排序 —— 从基础入门到手写实现
前端·javascript