VScode远程连接docker容器教程

拉取镜像(本地无镜像时必做,有则可跳过)

docker pull docker.1ms.run/rlsquare/rl2:latest

启动并进入容器(核心命令)

docker run -it -p 8080:22 --name rl2_container docker.1ms.run/rlsquare/rl2:latest /bin/bash

后续进入容器

docker exec -it rl2_container /bin/bash

关键参数解释

  • -p 8080:22:核心端口映射参数,格式为「主机端口:容器端口」,实现主机 8080 端口和容器 22 端口的双向转发。
  • -it:-i(保持标准输入打开)±t(分配伪终端),让你能和容器的终端交互。
  • -d:后台运行容器(detached 模式),启动后容器不会占用当前终端。
  • --name rl2_container:给容器命名(可选),方便后续通过名称操作容器(如停止、删除),避免用冗长的容器 ID。
  • docker exec:在已运行的容器中执行命令,是进入后台运行容器的标准方式。

VScode远程链接

你想知道如何通过 VSCode 远程连接到刚才启动的、已将主机 8080 端口映射到容器 22 端口的 rl2_container 容器,我会分步骤教你最常用的两种方式(SSH 方式和 Dev Containers 插件方式),其中 SSH 方式适配你已映射 22 端口的场景,更贴合你的需求。

前置条件

  1. 容器已通过 docker run -d -p 8080:22 --name rl2_container docker.1ms.run/rlsquare/rl2:latest 后台运行。
  2. 容器内的 22 端口(SSH 服务)已正常启动(若未启动,文末会给出修复方法)。
  3. VSCode 已安装(建议最新版本)。
步骤 1:安装 VSCode 插件

打开 VSCode → 左侧扩展栏 → 搜索并安装「Remote - SSH」(微软官方插件,图标是 SSH 标识)。

步骤 2:配置 SSH 连接
  1. 按下 F1 键 → 输入并选择「Remote-SSH: Open SSH Configuration File...」。

  2. 选择一个配置文件(推荐选用户目录下的 config 文件,如 ~/.ssh/config)。

  3. 在配置文件中添加以下内容,保存文件:

    复制代码
    Host rl2-docker-container
        HostName  10.1.11.1  # 本地主机 IP,容器运行在本机
        Port 8080           # 映射到容器 22 端口的主机端口
        User root           # 容器默认用户名(多数 Linux 镜像默认 root,若不是需替换)
        IdentityFile ~/.ssh/id_rsa  # 可选:若容器需要密钥登录,填写私钥路径;无则注释
步骤 3:连接容器
  1. 按下 F1 键 → 输入并选择「Remote-SSH: Connect to Host...」。
  2. 选择刚配置的「rl2-docker-container」。
  3. 若弹出 SSH 密钥验证提示,选择「Continue」;若需要输入密码,容器默认 root 密码需根据镜像确定(常见默认密码:root/password,若未知可参考方式 2 先进入容器修改)。
  4. 连接成功后,VSCode 窗口左下角会显示「SSH: rl2-docker-container」,此时即可像操作本地文件一样编辑容器内的文件、打开终端。

常见问题排查

若 SSH 方式连接失败,大概率是容器内未启动 SSH 服务,可按以下步骤修复:

  1. 先进入容器:docker exec -it rl2_container /bin/bash

  2. 安装并启动 SSH 服务(以 Debian/Ubuntu 镜像为例):

    bash 复制代码
    # 更新源
    apt update
    # 安装 SSH 服务
    apt install -y openssh-server
    # 启动 SSH 服务
    service ssh start
    # 设置 root 密码(否则 SSH 无法登录)
    passwd root
  3. 重启容器后重新尝试 SSH 连接:docker restart rl2_container

测试服务器内连接容器 SSH(关键验证):

ssh root@127.0.0.1 -p 8080 # 在服务器本地连接自己的8080端口(转发到容器22)

  • 若能登录:说明容器 SSH 和端口映射都正常。
  • 若不能登录:说明容器内 SSH 服务未正确启动,需重新启动容器内 SSH:

进入容器

docker exec -it rl2_container /bin/bash

重启SSH服务(Debian/Ubuntu)

service ssh restart

确保SSH监听22端口

netstat -tulpn | grep 22
很多 Linux 镜像的 SSH 配置默认禁止 root 用户通过密码登录,这是导致「Permission denied」的最常见原因。继续在容器内执行以下命令:

1 编辑SSH配置文件

vi /etc/ssh/sshd_config

2 找到以下配置项,修改为对应值(没有则新增):

按 i 进入编辑模式,修改后按 Esc,输入 :wq 保存退出

PermitRootLogin yes # 允许root用户登录

PasswordAuthentication yes # 允许密码验证登录

ChallengeResponseAuthentication no # 关闭挑战响应验证(可选,避免干扰)

3 重启SSH服务(使配置生效)

service ssh restart

若还是不行,则本地测试ssh链接(不是服务器,本地Windows)

bash 复制代码
# 本地终端执行:直接连接服务器的8080端口(容器SSH)
ssh root@10.246.4.67 -p 8080

如果本地终端能登录:说明网络 / 端口正常,问题仅在 VSCode 插件,继续第四步;

如果本地终端也登录失败:说明服务器的 8080 端口未对外放行(安全组 / 防火墙问题),需登录服务器放行 8080 端口:

登录服务器(boss用户)

ssh boss@10.246.4.67

临时放行8080端口(CentOS/RHEL)

sudo firewall-cmd --add-port=8080/tcp --permanent

sudo firewall-cmd --reload

或Ubuntu/Debian

ufw allow 8080/tcp

ufw reload

最后完成!

相关推荐
好学且牛逼的马5 小时前
【工具配置|docker】
运维·docker·容器
yeflx8 小时前
解决Ubuntu22.04宿主机docker容器中nvidia-smi偶发失效问题
运维·docker·容器
ltqshs10 小时前
vscode离线插件下载-vscode编译嵌入式C语言配置
c语言·ide·vscode
吉吉6111 小时前
Docker拉取镜像解决办法
运维·docker·容器
acanab11 小时前
UE使用VScode开发 配置过程
ide·vscode·编辑器
小尤笔记12 小时前
【2024版】超详细Python+Pycharm安装保姆级教程,Python环境配置和使用指南,看完这一篇就够了
开发语言·ide·python·pycharm·编程语言·解释器
江拥羡橙12 小时前
vscode使用windsurf获取token
vscode·ai·windsurf
lpfasd12313 小时前
springcloud docker 部署问题排查与解决方案
spring·spring cloud·docker
宋情写13 小时前
docker-compose安装Redis
redis·docker·容器
装不满的克莱因瓶15 小时前
【2026最新 架构环境安装篇三】Docker安装RabbitMQ4.x详细教程
linux·运维·docker·容器·架构·rabbitmq