VSCode连接远程的docker容器进行代码调试

前言

Docker 是一个开源软件,也是一个开放平台,用于开发应用、交付(shipping)应用、运行应用。 Docker允许用户将基础设施(Infrastructure)中的应用单独分割出来,形成更小的颗粒(容器),从而提高交付软件的速度。

VSCode连接远程的docker容器进行代码调试_第1张图片

而Visual Studio Code(简称VSCode)是一款由微软开发且跨平台的免费源代码编辑器。默认支持非常多的编程语言,作为一款简洁而又强大的编辑器,通过安装插件后可以武装成IDE。

本文内容简要介绍如何使用VSCode调试远程docker容器内的代码。

实现

远程机器上的docker容器配置

开启docker daemon

sudo service docker start

配置端口映射

在docker启动参数配置增加端口映射(如 -p 6666:22):

sudo docker run -it -p 6666:22 image_name

安装并开启ssh服务

启动容器后,安装openssh:

apt-get update
apt-get install openssh-server

设置远程登录的密码

如果希望直接使用root账户登录容器,则设置root密码

passwd 

提示:也可以重新添加账号并设置密码

增加root账户登录许可

vim /etc/ssh/sshd_config
注释掉 PermitRootLogin prohibit-password 这一行 
添加这一行 PermitRootLogin yes 

重启ssh服务

service ssh restart

尝试直接使用ssh登录

ssh root@***.***.***.*** -p 6666

其中***.***.***.***为远程机器的IP。
输入上面设置的密码即可登入。

本地电脑上的VSCode配置

一般Windows会自带openssh,如未安装需要先安装。

VSCode下载Remote-SSH插件

VSCode连接远程的docker容器进行代码调试_第2张图片

VSCode连接远程容器

在安装好Remote-SSH插件后点击左侧栏的SSH连接图标:
VSCode连接远程的docker容器进行代码调试_第3张图片
点击新建一个SSH连接:
VSCode连接远程的docker容器进行代码调试_第4张图片
输入ssh root@***.***.***.*** -p 6666
在这里插入图片描述

输入密码确认:
VSCode连接远程的docker容器进行代码调试_第5张图片
正常连接容器后,即可打开代码开始调试(调试相关环境需要自行安装)。

注:打开容器中某文件夹时可能需要密码二次确认。

其他问题

端口未开放导致无法登录

在本机配置:

ssh -L 127.0.0.1:6666:127.0.0.1:6666 -N -f root@***.***.***.***

其中***.***.***.***为远程机器的IP。

然后登录:

ssh [email protected] -p 6666

其他端口问题解决方案可查阅文末参考资料[3]。

二次连接报错

(1)如果二次连接登录时报ssh连接信息与已存在信息不相符的错误,则删除known_hosts中IP 127.0.0.1 对应的那一行的内容:

notepad.exe C:\\Users\\xxx\\.ssh\\known_hosts

(2)如果二次连接登录时报端口问题,则重新在本机配置:

ssh -L 127.0.0.1:6666:127.0.0.1:6666 -N -f root@***.***.***.***

版权说明

本文为原创文章,独家发布在blog.csdn.net/TracelessLe。未经个人允许不得转载。如需帮助请email至[email protected]
在这里插入图片描述

参考资料

[1] Docker - 维基百科,自由的百科全书
[2] Windows VSCode配置conda shell执行Python脚本_TracelessLe的专栏-CSDN博客
[3] VSCode连接远程服务器里的docker容器 - 知乎
[4] Developing inside a Container using Visual Studio Code Remote Development
[5] Solving Docker permission denied while trying to connect to the Docker daemon socket | by Dhananjay Kr. | Medium
[6] Docker保存修改后的镜像 - 知乎
[7] Docker 删除&清理镜像 - 犬小哈 - 博客园
[8] Docker容器的创建、启动、和停止 - Ruthless - 博客园
[9] Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running? - 华为云
[10] linux - Docker can’t connect to docker daemon - Stack Overflow
[11] Docker import/export vs. load/save | PSPDFKit

你可能感兴趣的:(#,操作系统,docker,linux,ssh,ubuntu,vscode)