当前位置: 首页 > news >正文

【VS Code】使用 VS Code 登陆远程服务器上的 Docker 容器

以下命令默认已经构建了一个 Docker Image。 

# 在服务器上启动 docker (-p 端口映射,用于后续的 ssh 连接)
docker run -itd -v /mnt/mount/:/home -p 8124:22 --name container-name --gpus all image-name# 进入容器中
docker exec -it container-name /bin/bash# 设置密码,后续登陆使用,比如 admin
passwd# 查看 ssh 状态(出现 ssh: unrecognized service 表示 ssh 未安装)
service ssh status # 安装 ssh
apt-get update
apt-get install openssh-server# 启动 ssh (出现 * Starting OpenBSD Secure Shell server sshd 表示启动成功)
service ssh start # 打开 ssh 配置文件进行修改,并重启
vi /etc/ssh/sshd_config
```
# 修改 PermitRootLogin 和 UsePAM 
#PermitRootLogin prohibit-password
PermitRootLogin yes 
# UsePAM yes
UsePAM no  
```
service ssh restart# 在服务器上进行连接测试,输入上面设置的密码 admin,登陆成功则没问题
ssh root@127.0.0.1 -p 8124
# vscode 登陆此容器只需要把上面的 127.0.0.1 换成服务器 ip 即可

上述的步骤主要是在服务器上启动了一个docker容器,并在容器内安装和配置了ssh服务。以下是对于这些步骤的详细解释:

首先,使用 docker run 命令在服务器上启动了一个名为 container-name 的容器。这里使用了 -v /mnt/mount/:/home 参数将服务器上的 /mnt/mount/ 目录映射到容器的 /home 目录。另外,-p 8124:22 参数表示将容器的22端口(ssh默认端口)映射到服务器的8124端口,这样后续可以通过ssh协议连接到容器。--name container-name --gpus all 参数为容器指定了一个名字和GPU的使用权限。最后的 image-name 是要运行的docker镜像名称。

接着,使用 docker exec -it container-name /bin/bash 命令进入了容器的交互式shell。在此命令中,-it 参数表示保持交互,并分配一个伪终端。/bin/bash 是要执行的shell命令,即启动bash shell。

在容器内,使用 passwd 命令设置了密码,这个密码将用于后续的ssh登陆。

为了确认ssh是否已经在容器内安装,使用 service ssh status 命令检查ssh服务的状态。如果未安装ssh服务,将会出现 unrecognized service 的提示。

如果ssh未安装,则使用 apt-get update 和 apt-get install openssh-server 命令来安装ssh服务。

安装完成后,使用 service ssh start 命令启动ssh服务。如果一切正常,将会看到 Starting OpenBSD Secure Shell server sshd 的提示,表示ssh服务已经成功启动。

为了修改ssh的配置,首先使用 vi /etc/ssh/sshd_config 命令打开配置文件。在配置文件中,修改了 PermitRootLogin 和 UsePAM 的设置。PermitRootLogin yes 表示允许root用户登录,而 UsePAM no 则表示不使用Pluggable Authentication Modules。修改后,使用 service ssh restart 命令重启ssh服务以应用新的配置。

最后,为了测试ssh连接是否正常,使用 ssh root@127.0.0.1 -p 8124 命令尝试连接到容器。在输入密码后,如果能正常登陆,就表示ssh连接没有问题。对于VSCode的远程连接也是同样的方式,只需要将上述命令中的 127.0.0.1 换成服务器的实际IP地址即可连接到VSCode。

以上就是在服务器上启动docker容器,并在容器内安装和配置ssh服务的全过程。

http://www.lryc.cn/news/214809.html

相关文章:

  • 用Python做数据分析之数据统计
  • 智慧工地建造平台源码、智慧化工地云平台源码
  • Spring Cloud Alibaba中Nacos的安装(Windows平台)以及服务的发现
  • QR码应用实战:Spring Boot与ZXing完美结合
  • Leetcode刷题详解——两两交换链表中的节点
  • Openssl数据安全传输平台019:外联接口类的封装以及动态库的制作 - Bug未解决,感觉不是代码的问题
  • YOLO目标检测——安全帽佩戴检测数据集【含对应voc、coco和yolo三种格式标签】
  • P4345 [SHOI2015] 超能粒子炮·改 题解---------Lucas定理
  • http代理和ip代理的区别,代理IP带来了哪些好处?
  • 浅谈电动汽车充电桩检测技术的实现
  • 20 分钟搭建一个串流服务器
  • Android ActivityLifecycleCallback使用
  • 力扣labuladong——一刷day14
  • 循环神经网络(RNN)与长短期记忆网络(LSTM)
  • ArxDbgDocLockWrite 类简介
  • 【教3妹学编辑-算法题】环和杆
  • 解决 eslint 的 Parsing error: Unexpected token 错误
  • VR全景技术在文化展示与传播中有哪些应用?
  • Linux shell编程学习笔记19:until循环语句
  • (CV)论文列表
  • 恶意软件防范和拦截: 提供防范恶意软件攻击的策略
  • 单例模式浅析
  • Springboot引入mybatis-plus及操作mysql的json字段
  • springboot读取application.properties中文乱码问题
  • SAML- 安全断言标记语言
  • 【佳学基因检测】Node.js中http模块的使用
  • 前端基础之JavaScript
  • [GDOUCTF 2023]<ez_ze> SSTI 过滤数字 大括号{等
  • C/C++奇数求和 2021年3月电子学会青少年软件编程(C/C++)等级考试一级真题答案解析
  • Android APT的使用