当前位置: 首页 > news >正文

ssh连接docker vscode_VScode远程连接Docker容器实现X11转发

需求

一般在Windows做Linux下C++开发都会用虚拟机解决,进阶一点可能会想到VScode remote + WSL

这些方案终究没有摆脱性能限制,对于庞大工程本地编译动辄十分钟以上的make严重影响体验

希望利用远程高性能Linux服务器的多核心与大内存加速开发

同时调试用到OpenCV的imshow需要打通Docker容器的X11转发

准备

Windows

Windows这边需要安装X11程序,常见商业软件Xmanager,免费的XMing和VcXsrv这里选择微软的开源VcXsrv

https://sourceforge.net/projects/vcxsrv/

安装后进行简单配置,保留默认Multiple windows和Display number -1

6e1ff714af6f4df3ba6b05255ecca9a8.png

第二步选start no client

8e52eab5325429f00fda391e60be0609.png

这一步比较重要,勾选Disable acccess control

12ca7da35eb19548c0c944f1d2699f27.png

完成配置可在右下角托盘内看到服务已经启动

打开VScode安装Remote-SSH插件

b0094bbd4c1e5391f9cf9a9ffa6b32dc.png

在PowerShell内使用ssh-keygen生成公钥(一路回车)

复制~/.ssh/id_rsa.pub内容

Linux

下载安装docker并将当前用户加入docker组

sudo apt install docker.io

sudo usermod -aG docker $USER

替换国内服务器加速下载

sudo vim /etc/docker/daemon.json

# Add following content

{"registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]}

重启Docker服务生效

sudo service docker restart

拉取基础镜像(以Ubuntu 18.04为例)

docker pull ubuntu:18.04

启动容器并打开端口映射

docker run -it -p 8022:22 --name remote ubuntu:18.04 bash

若需要在Docker使用gdb调试还需增加参数--security-opt seccomp=unconfined否则报错ptrace:Operation not permitted

docker run -it -p 8022:22 --name remote --security-opt seccomp=unconfined ubuntu:18.04 bash

更换apt源并安装常用工具(至少安装openssh-server)

sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list

apt update

apt install -y vim git openssh-server cmake autoconf build-essential libopencv-dev

确保/etc/ssh/sshd_config中已配置X11Forwarding yes

启动ssh服务端

/etc/init.d/ssh start

默认不允许root用户使用密码连接,需要创建公钥认证文件

cd

mkdir .ssh

chmod 700 .ssh

cd .ssh

vi authorized_keys

# paste content from Windows id_rsa.pub and save

chmod 600 authorized_keys

准备就绪,按下Ctrl+PQ断开容器连接

连接

点击VScode左侧Remote选择添加,输入容器所在宿主机ip与映射端口号ssh root@10.0.1.97 -p 8022

6c7dd753677342b45b0f5d5558ec9567.png

选择默认ssh配置文件C:/Users/XXX/.ssh/config进行更新

点击右下角Connect进行连接

30863d7986da6d240d35ceed2200f761.png

等待VScod自动下载安装code-server完成,最后在容器终端内配置X11转发地址(修改10.0.1.51为Windows内网ip)

export DISPLAY=10.0.1.51:0.0

测试

在VScode内置terminal中安装xeyes

apt install x11-apps

xeyes

X11转发正常

dc3473f1b2454157dcc78b475e50496d.png

参考

相关文章:

  • linux mysql 最全安装_最全的mysql 5.7.13 安装配置方法图文教程(linux) 强烈推荐!
  • centos7镜像带mysql吗_【系列7】使用Dockerfile创建带mysql的Centos Docker镜像
  • spark mysql 环境搭建_Hive搭建
  • mysql vsftp_vsftp配置验证方式mysql和文件虑拟用户
  • php mysql 连接运算符_php – MINUS运算符在MySQL?
  • centos7.3中安装mysql_CentOS7.3中安装MySQL5.6
  • qstring取前几个_QT中QString 类的使用--获取指定字符位置、截取子字符串等
  • 怎么用yum安装mysql数据库_使用yum如何安装mysql数据库讲析
  • java完全面向对象吗_浅谈对Java为何是完全面向对象语言
  • java getbean不同实现_Spring Boot 2 实战:根据条件来自动配置不同逻辑的Bean
  • 孝感 java_孝感java工资一般多少,孝感java工资待遇,孝感java工资待遇到多少
  • java struct2拦截器_Java struts2 拦截器 interceptors
  • JAVA安卓4.4.4_Android源码4.4.4_r1下载和编译
  • java 设置listview单元格颜色_动态改变Listview的item背景颜色和item中字体的颜色
  • 最长递增子序列 java_动态规划深入6 最长递增子序列
  • php的引用
  • Android开发 - 掌握ConstraintLayout(四)创建基本约束
  • bearychat的java client
  • C学习-枚举(九)
  • Docker: 容器互访的三种方式
  • eclipse的离线汉化
  • golang中接口赋值与方法集
  • Laravel 中的一个后期静态绑定
  • Linux gpio口使用方法
  • nodejs调试方法
  • SOFAMosn配置模型
  • Vue.js 移动端适配之 vw 解决方案
  • 得到一个数组中任意X个元素的所有组合 即C(n,m)
  • 基于遗传算法的优化问题求解
  • 让你的分享飞起来——极光推出社会化分享组件
  • 如何编写一个可升级的智能合约
  • 如何在 Tornado 中实现 Middleware
  • 深度学习中的信息论知识详解
  • 使用权重正则化较少模型过拟合
  • 与 ConTeXt MkIV 官方文档的接驳
  • [Shell 脚本] 备份网站文件至OSS服务(纯shell脚本无sdk) ...
  • Redis4.x新特性 -- 萌萌的MEMORY DOCTOR
  • #pragma 指令
  • #我与Java虚拟机的故事#连载02:“小蓝”陪伴的日日夜夜
  • $HTTP_POST_VARS['']和$_POST['']的区别
  • (3)选择元素——(17)练习(Exercises)
  • (python)数据结构---字典
  • (Redis使用系列) Springboot 实现Redis 同数据源动态切换db 八
  • (Redis使用系列) Springboot 使用Redis+Session实现Session共享 ,简单的单点登录 五
  • (编译到47%失败)to be deleted
  • (第61天)多租户架构(CDB/PDB)
  • (二)springcloud实战之config配置中心
  • (附源码)基于SSM多源异构数据关联技术构建智能校园-计算机毕设 64366
  • (论文阅读31/100)Stacked hourglass networks for human pose estimation
  • (实战)静默dbca安装创建数据库 --参数说明+举例
  • (译)2019年前端性能优化清单 — 下篇
  • (转)eclipse内存溢出设置 -Xms212m -Xmx804m -XX:PermSize=250M -XX:MaxPermSize=356m
  • . Flume面试题
  • .\OBJ\test1.axf: Error: L6230W: Ignoring --entry command. Cannot find argumen 'Reset_Handler'
  • .MyFile@waifu.club.wis.mkp勒索病毒数据怎么处理|数据解密恢复