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

最后完成!

相关推荐
天草二十六_简村人1 小时前
jenkins打包制作Python镜像,并推送至docker仓库,部署到k8s
后端·python·docker·容器·kubernetes·jenkins
虚伪的空想家1 小时前
首发:TDengine3.3.6版本使用K8S部署
java·docker·容器·kubernetes·k8s·时序数据库·tdengine
海市公约2 小时前
Python操作SQLite数据库:从基础语法到完整项目实战
数据库·ide·python·程序人生·架构·pycharm·sqlite
babywew12 小时前
探索弹道计算软件:Matlab GUI 背后的秘密
docker
✎ ﹏梦醒͜ღ҉繁华落℘2 小时前
VisualStudio软件使用技巧
ide·visual studio
MyFreeIT2 小时前
部署到Docker后,路径造成的异常
运维·docker·容器
TroubleBoy丶3 小时前
Docker可用镜像
java·linux·jvm·docker
java_logo3 小时前
PGADMIN4 Docker 容器化部署指南
运维·数据库·docker·postgresql·容器·数据库系统
java_logo3 小时前
Apache Kafka Docker 容器化部署指南
运维·docker·云原生·容器·kafka·kubernetes·apache