拉取镜像(本地无镜像时必做,有则可跳过)
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 端口的场景,更贴合你的需求。
前置条件
- 容器已通过
docker run -d -p 8080:22 --name rl2_container docker.1ms.run/rlsquare/rl2:latest后台运行。 - 容器内的 22 端口(SSH 服务)已正常启动(若未启动,文末会给出修复方法)。
- VSCode 已安装(建议最新版本)。
步骤 1:安装 VSCode 插件
打开 VSCode → 左侧扩展栏 → 搜索并安装「Remote - SSH」(微软官方插件,图标是 SSH 标识)。
步骤 2:配置 SSH 连接
-
按下
F1键 → 输入并选择「Remote-SSH: Open SSH Configuration File...」。 -
选择一个配置文件(推荐选用户目录下的
config文件,如~/.ssh/config)。 -
在配置文件中添加以下内容,保存文件:
Host rl2-docker-container HostName 10.1.11.1 # 本地主机 IP,容器运行在本机 Port 8080 # 映射到容器 22 端口的主机端口 User root # 容器默认用户名(多数 Linux 镜像默认 root,若不是需替换) IdentityFile ~/.ssh/id_rsa # 可选:若容器需要密钥登录,填写私钥路径;无则注释
步骤 3:连接容器
- 按下
F1键 → 输入并选择「Remote-SSH: Connect to Host...」。 - 选择刚配置的「rl2-docker-container」。
- 若弹出 SSH 密钥验证提示,选择「Continue」;若需要输入密码,容器默认 root 密码需根据镜像确定(常见默认密码:
root/password,若未知可参考方式 2 先进入容器修改)。 - 连接成功后,VSCode 窗口左下角会显示「SSH: rl2-docker-container」,此时即可像操作本地文件一样编辑容器内的文件、打开终端。
常见问题排查
若 SSH 方式连接失败,大概率是容器内未启动 SSH 服务,可按以下步骤修复:
-
先进入容器:
docker exec -it rl2_container /bin/bash。 -
安装并启动 SSH 服务(以 Debian/Ubuntu 镜像为例):
bash# 更新源 apt update # 安装 SSH 服务 apt install -y openssh-server # 启动 SSH 服务 service ssh start # 设置 root 密码(否则 SSH 无法登录) passwd root -
重启容器后重新尝试 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
最后完成!
