文章目录
- 前言
- 1. docker容器安装ssh服务
- 1.1. 安装docker的ssh
- 1.2.在容器终端下依次执行如下命令:
- 1.3.回到宿主机终端后,依次执行如下命令:
- 1.4. 使用 ssh 客户端工具(如 MobaXterm)连接容器
- 2、vscode连入docker
- 总结
前言
应用场景vscode要ssh远程到docker容器中,想调试本地代码一样调试docker容器内的代码,先打个样子
1. docker容器安装ssh服务
1.1. 安装docker的ssh
创建并启动centos7容器,运行init程序(必须打开privileged选项,否则将出现“Failed to get D-Bus connection: Operation not permitted”)
在宿主机终端下依次执行如下命令:
# 拉取centos7镜像
docker pull centos:7
# 创建并启动centos7容器,运行init程序(必须打开privileged选项,否则将出现“Failed to get D-Bus connection: Operation not permitted”)
docker run -d -name centos7 --privileged=true centos:7 /usr/sbin/init
# 进入容器终端,运行bash程序
docker exec -it centos7 /bin/bash
1.2.在容器终端下依次执行如下命令:
# 安装所需软件
yum install -y initscripts openssh-server openssl openssl-devel
# 启动ssh服务
service sshd restart
# 确保22端口已打开
ss -tan
# 修改sshd配置文件,找到"PermitRootLogin yes",取消这一行的注释,然后保存退出
vim /etc/ssh/sshd_config
# 设置root用户的密码
echo 123456 | passwd --stdin root
# 退出容器终
exit
1.3.回到宿主机终端后,依次执行如下命令:
# 将容器保存为新的镜像
docker commit <容器ID> justin0114/centos7-ssh
# 关闭容器
docker kill <容器ID>
# 使用新镜像创建并启动容器,同时配置端口映射(将本地端口5022映射到容器端口22)
docker run -d -p 5022:22 --privileged=true justin0114/centos7-ssh /usr/sbin/init
1.4. 使用 ssh 客户端工具(如 MobaXterm)连接容器
ssh -p 5022 root@172.18.43.130
(base) [jianming_ge@localhost ~]$ ssh -p 5022 root@172.18.43.130
The authenticity of host '[172.18.43.130]:5022 ([172.18.43.130]:5022)' can't be established.
ECDSA key fingerprint is SHA256:8BW+XdShdz4WcSRZQsdM4HcG0hWjW2VAxsa2lhSlWPk.
ECDSA key fingerprint is MD5:80:e4:aa:a0:37:a1:dd:52:bb:f5:92:78:1f:f3:86:86.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[172.18.43.130]:5022' (ECDSA) to the list of known hosts.
root@172.18.43.130's password:
Permission denied, please try again.
root@172.18.43.130's password:
[root@d0370e0011ee ~]#
2、vscode连入docker
其实,刚才1.4 可以用ssh命令行连入,说明docker镜像已经安装成功了ssh服务,现在只是换一个客户端来连接
配置:
安装:
mkdir /app
运行成功!!!
为后面本地vscode调试docker代码打下良好的基础~ 具体看 我的另一篇博文 yolv5的c++落地, 落了2个月的还没成功
1、映射目录 2.python环境的管理设置
总结
应用场景vscode要ssh远程到docker容器中,想调试本地代码一样调试docker容器内的代码,打样完成,说着完全是可行的
后面:1、映射目录 2.python环境的管理设置