VSCode连接远程服务器并使用docker容器调试代码

目录

1.连接远程服务器

2.容器搭建

3.连接容器


1.连接远程服务器

首先需要使用服务器ip和公司给的账号密码

(1)在VSCode中安装扩展Remote Development

(2)安装完成左侧菜单栏出现一个远程资源管理的图标,选择SSH Targets,点击“+”添加远程主机: ssh user(服务器用户名)@ip(服务器ip) -p port(端口号),保存以后左侧会出现对应机器名称。 

回车确认后需要选择一个SSH配置文件保存的路径,一般默认回车即可。完成后可以在左边远程资源管理器看到刚刚添加的主机,并且右下角有通知,点击通知中的 OpenConfig可以打开刚刚保存的配置。

或者点击齿轮图标,打开config配置文件,按照如下格式添加主机:

Host 机器名称,可以任意
    HostName IP地址
    Port 端口号(不加Port,则端口号默认为22)
    User 服务器登录用户名

 

(3)在已保存的服务器名称旁,点击连接按钮后选择平台,再输入密码即可连接服务器。 

 

 点击小电脑标志的右侧箭头进行ssh

2.容器搭建

首先需要进入服务器,用ssh连接,这里大家用的方式可以不同,我这里用的是这个小插件

打开后进入以下界面,输入公司或者实验室给你的账号密码

 

 

docker run -td --ipc=host --gpus all --runtime=nvidia -v
/dataloader/czc/:/database --network="host" --name czc_yolov8
ultralytics/ultralytics
/dataloader/czc/这里是服务器的你自己的建的路径存放个人代码数据
/database这里是上面你的路径映射到容器里的对应的根目录
czc_yolov8 你的容器的名字 根据你的任务,我这个是yolov8的容器

常用指令

激活进入你的容器 

docker exec -it czcyolov8 bash

查看现有容器

docker ps -a
重启容器

docker restart

查看显卡情况  

nvidia-smi

3.连接容器

(1)在VSCode中安装docker插件

点击左侧的扩展按钮或使用快捷键command+shift+x(Windows下为Ctrl+Shift+X)打开扩展中心,点击docker扩展中的 在SSH:远程主机IP中安装

完成后点击 需要重新加载按钮或使用快捷键command+shift+p(Windows下为Ctrl+Shift+P)打开命令面板输入 reload window回车重载。然后点击左侧的Docker按钮,可以看到远程主机上的docker信息。  

2) 在VSCode中安装remote container插件(搜不到搜Dev Containers),同样选择 在SSH:远程主机IP中安装。 

 

 (3)打开docker之后,在vscode中ctrl+shift+p,出现命令行,之后attach to running container。 

 

输入密码之后连接自己的container即可进入容器,一般需要初始化一段时间,耐心等待即可。 

 打开文件夹之后显示文件夹内容,可与服务器同步更改。

 

### Docker 重启容器远程连接失败的解决方案 当 Docker 容器被重启后,如果遇到无法远程连接的情况,通常可能是由于以下几个原因引起的: #### 1. **网络模式问题** Docker 默认使用的 `bridge` 网络模式可能会导致容器内部的服务绑定到本地回环地址 (127.0.0.1),从而阻止外部访问。可以通过指定 `-p` 参数来映射主机端口到容器端口[^2]。 ```bash docker run -d -p 3306:3306 --name mysql-container mysql:latest ``` 此命令会将宿主机的 3306 端口映射到容器内的 MySQL 服务端口,确保外部可以正常访问。 --- #### 2. **防火墙或安全组设置** 即使容器本身配置无误,宿主机上的防火墙规则可能仍会阻断来自外部的请求。需要确认宿主机是否允许目标端口的入站流量。 对于 Linux 系统,可使用以下命令开放特定端口: ```bash sudo firewall-cmd --zone=public --add-port=3306/tcp --permanent sudo firewall-cmd --reload ``` 如果是云服务器,则需检查其安全组策略,确保对应端口已放行[^4]。 --- #### 3. **容器内服务监听地址错误** 某些情况下,默认配置可能导致服务仅监听 localhost 地址而非所有网卡接口 (`0.0.0.0`)。以 MySQL 为例,在容器启动前应修改配置文件 `/etc/mysql/my.cnf` 或类似的路径,找到如下字段调整为全局监听[^3]: ```ini bind-address = 0.0.0.0 ``` 完成更改后记得保存文件重新启动容器以应用新配置。 --- #### 4. **DNS 配置冲突** 有时 DNS 设置不当也会引发连通性异常。可以在运行容器时显式声明静态 IP 和域名解析方式避免此类情况发生: ```bash docker network create mynet --subnet=192.168.1.0/24 docker run -d --network=mynet --ip=192.168.1.10 --name test-redis redis:alpine ``` 上述操作定义了一个自定义桥接网络,分配固定IP给 Redis 实例[^1]。 --- #### 5. **时间同步差异** 跨平台通信还容易受到 NTP 同步影响,特别是在虚拟化环境下。建议定期校准系统时间和硬件钟偏差以防意外中断现象产生。 --- 综上所述,针对不同场景采取相应措施即可有效应对大多数因 Docker 容器重启而导致的远控失效难题。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

陈子迩

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值