docker vscode 连接不上 docker vscode server_docker


前几天双十一购买了一个小型的NAS,NAS的自带系统支持完整的linux环境ssh server,用来保存代码和相关工具还是很方便的,前几天有人问我怎么配置方便的远程编辑环境,我这找个机会简单写一下配置,这个东西利用现有工具并不复杂。

文中用到的工具主要有docker,noVNC,docker sshfs插件,vscode。个人觉得配置起来的应用主要可以用来做远程代码编辑和审计环境,远程结伴编程和教学之类的。

文中用到的docker 镜像有:

saturnman/ubuntu-xfce-vnc-code


docker pull saturnman/ubuntu-xfce-vnc-cod


busybox


docker pull busybox


docker插件有:

vieux/sshfs


docker plugin install vieux/sshfs


一、基本网络结构


docker vscode 连接不上 docker vscode server_docker_02


基本的访问结构如上图所示,通过中间服务器访问远程不同的ssh server上的代码,之后将编辑器界面通过浏览器远程呈现给用户,当然中间服务器和ssh server完全可以就是同一台服务器。

二、配置ssh公钥

为了更加安全和有效管理不同的权限,强烈建议不要使用自己常用的系统的公钥,而且为不同的目标用户设置不同的linux账户,以管理不同的权限。比如纯粹的reviewer和展示、教学等不需要目标用户可以编辑文件,可以配置只读权限就可以。

我在自己的根目录/Users/saturnman/sshkeys下生成新的密钥


ssh-keygen -f id_reviewer_rsa -t rsa


不要设置私钥访问密码,之后将公钥添加到远程ssh server目标用户的authorized_keys文件中,测试一下访问。


ssh -i ~/sshkeys/id_reviewer_rsa code@192.168.0.30


注意:如果是新建authorized_keys文件,一定要将这个文件的权限设置成600,否则ssh本身会出现非常多的问题,无法正常工作。

二、配置docker的sshfs插件

为了要让sshfs插件记住密钥的默认目录,要对其进行配置

1.先停用插件


docker plugin disable vieux/sshfs


2.设置选项


docker plugin set vieux/sshfs sshkey.source=/Users/saturnman/sshkeys/


3.启用插件


docker plugin enable vieux/sshfs


三、配置docker volume

1.创建docker volume


docker volume create -d vieux/sshfs -o sshcmd=code@192.168.0.30:/disks/disk2/projects/incubator-tvm -o IdentityFile=/root/.ssh/id_reviewer_rsa codeVolume


2.测试volume


sudo docker run -it -v codeVolume:/code busybox ls /code


如果没有问题,可以看到远程文件了


docker vscode 连接不上 docker vscode server_docker vscode 连接不上_03


四、启动docker vnc+vscode镜像


sudo docker run -d  -p 7000:6901 -v codeVolume:/code  -e VNC_PW=123456 saturnman/ubuntu-xfce-vnc-code


其中选项VNC_PW是密码,一般不要设置过于简单

成功启动后就可以从浏览器访问了http://localhost:7000/vnc.html

vscode在系统Application->Development中,打开/code目标,就可以工程代码了。下面是DL明星项目TVM


docker vscode 连接不上 docker vscode server_ubuntu_04