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

vscode通过ssh链接远程服务器上的docker

目录

  • 1 编译docker image
    • 1.1 编译镜像
    • 1.2 启动镜像
  • 2 在docker container中启动ssh服务
    • 2.1 确认是否安装ssh server
    • 2.2 修改配置文件
    • 2.3 启动ssh服务
  • 3 生成ssh key
  • 4 添加ssh公钥到docker container中
  • 5 vscode安装插件Remote - SSH
  • 6 在vscode中配置

1 编译docker image

一般来说没有什么问题,但是我自己编的centos7,无法启动ssh服务。会报类似这种错误。

Failed to get D-Bus connection: Operation not permitted

好多人说是启动docker run的时候忘记加 --privileged,我是了没有用。之后在网上找了很久,发现在dockerfile中这么写,可以解决问题,主要参考这里

FROM centos
MAINTAINER "Yourname" <youremail@address.com>
ENV container docker
RUN yum -y update; yum clean all
RUN yum -y install systemd; yum clean all; \
(cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;
VOLUME [ "/sys/fs/cgroup" ]
CMD ["/usr/sbin/init"]

结合之后,我自己的dockerfile是这样的

ARG SYSTEM_IMAGE=centos:7
FROM ${SYSTEM_IMAGE}ENV container docker
ENV TZ=Asia/Shanghai
ENV WORK_DIR=/home/workRUN curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-7.repo
RUN yum -y update; yum clean all
RUN yum -y install systemd; yum clean all; \
(cd /lib/systemd/system/sysinit.target.wants/; for i in *; do [ $i == systemd-tmpfiles-setup.service ] || rm -f $i; done); \
rm -f /lib/systemd/system/multi-user.target.wants/*;\
rm -f /etc/systemd/system/*.wants/*;\
rm -f /lib/systemd/system/local-fs.target.wants/*; \
rm -f /lib/systemd/system/sockets.target.wants/*udev*; \
rm -f /lib/systemd/system/sockets.target.wants/*initctl*; \
rm -f /lib/systemd/system/basic.target.wants/*;\
rm -f /lib/systemd/system/anaconda.target.wants/*;RUN yum -y install kde-l10n-Chinese \&& localedef -c -f UTF-8 -i zh_CN zh_CN.UTF-8 \&& echo 'export LC_ALL="zh_CN.UTF-8"' >> /etc/bashrc \&& yum clean allRUN yum install -y mysql-devel git
WORKDIR ${WORK_DIR}
VOLUME [ "/sys/fs/cgroup" ]
CMD [ "/usr/sbin/init" ]

1.1 编译镜像

docker build --build-arg SYSTEM_IMAGE=centos:7 -f Dockerfile . -t image_name

1.2 启动镜像

docker run --privileged -itd --name qzw_og-manual-intervention-2 -p 2226:22 image_name /sbin/init

注意这里有端口映射,过会需要用到2226这个端口

2 在docker container中启动ssh服务

主要参考这里,后面可能要牵扯到安装相关包,可以切换阿里源

2.1 确认是否安装ssh server

yum list installed | grep openssh-server

在这里插入图片描述
如果没有找到,则安装

yum install openssh-server

2.2 修改配置文件

vim /etc/ssh/sshd_config

在这里插入图片描述

2.3 启动ssh服务

service sshd start

如果找不到service命令,则

yum reinstall initscripts
或者
yum install initscripts

确认一下服务是否启动

ps -e | grep sshd

3 生成ssh key

在本地机器上执行

ssh-keygen -t rsa -b 2048 -C "email@example.com"
cat ~/.ssh/id_rsa.pub
# windows上是这样的
PS C:\Users\username> cat .\.ssh\id_rsa.pub

4 添加ssh公钥到docker container中

vim ~/.ssh/authorized_keys

将公钥拷贝到这里,然后保存。重启ssh服务

service sshd restart

5 vscode安装插件Remote - SSH

在这里插入图片描述

6 在vscode中配置

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

Host remote-dockerHostName 10.19.35.220User rootPort 2226IdentityFile "C:\Users\uersname\.ssh\id_rsa"

重新连接远程docker
在这里插入图片描述
不出意外,你就会看到remote-docker,点击就可以了。

撒花!!!

相关文章:

  • 北京网站建设多少钱?
  • 辽宁网页制作哪家好_网站建设
  • 高端品牌网站建设_汉中网站制作
  • 基于深度学习的车距检测系统
  • vi 编辑器快捷生成 main 函数和基本框架
  • python的readline()和readlines()
  • Hadoop基础组件介绍!
  • 【Git】Git Submodules 介绍(通俗易懂,总结了工作完全够用的 submodule 命令)
  • 签名优化:请求数据类型不是`application/json`,将只对随机数进行签名计算,例如文件上传接口。
  • 网络编程-TCP 协议的三次握手和四次挥手做了什么
  • Spark安装
  • npm安装依赖包报错,npm ERR! code ENOTFOUND
  • 介绍下项目的架构
  • 【精简版】jQuery 中的 Ajax 详解
  • 大数据面试SQL题-笔记01【运算符、条件查询、语法顺序、表连接】
  • 如何用EXCEL自动解方程/方程组?利用 矩阵乘法X=A-*B,X=mmult(minverse(A), B)
  • PHP手边酒店多商户版平台小程序系统源码
  • 前缀匹配工具之IP-Prefix
  • 【React系列】如何构建React应用程序
  • 【跃迁之路】【444天】程序员高效学习方法论探索系列(实验阶段201-2018.04.25)...
  • angular组件开发
  • avalon2.2的VM生成过程
  • JavaScript设计模式之工厂模式
  • Vue.js 移动端适配之 vw 解决方案
  • 关于Flux,Vuex,Redux的思考
  • 今年的LC3大会没了?
  • 理清楚Vue的结构
  • 前端_面试
  • 手机端车牌号码键盘的vue组件
  • 智能合约Solidity教程-事件和日志(一)
  • 教程:使用iPhone相机和openCV来完成3D重建(第一部分) ...
  • ​Distil-Whisper:比Whisper快6倍,体积小50%的语音识别模型
  • ​人工智能之父图灵诞辰纪念日,一起来看最受读者欢迎的AI技术好书
  • #宝哥教你#查看jquery绑定的事件函数
  • $var=htmlencode(“‘);alert(‘2“); 的个人理解
  • (+3)1.3敏捷宣言与敏捷过程的特点
  • (2021|NIPS,扩散,无条件分数估计,条件分数估计)无分类器引导扩散
  • (39)STM32——FLASH闪存
  • (ctrl.obj) : error LNK2038: 检测到“RuntimeLibrary”的不匹配项: 值“MDd_DynamicDebug”不匹配值“
  • (NSDate) 时间 (time )比较
  • (TOJ2804)Even? Odd?
  • (笔试题)分解质因式
  • (超详细)语音信号处理之特征提取
  • (二)斐波那契Fabonacci函数
  • (教学思路 C#之类三)方法参数类型(ref、out、parmas)
  • (考研湖科大教书匠计算机网络)第一章概述-第五节1:计算机网络体系结构之分层思想和举例
  • (每日一问)操作系统:常见的 Linux 指令详解
  • (转)关于pipe()的详细解析
  • *Django中的Ajax 纯js的书写样式1
  • .NET开源的一个小而快并且功能强大的 Windows 动态桌面软件 - DreamScene2
  • .NET开源快速、强大、免费的电子表格组件
  • .net生成的类,跨工程调用显示注释
  • ??eclipse的安装配置问题!??
  • [2008][note]腔内级联拉曼发射的,二极管泵浦多频调Q laser——
  • [2013][note]通过石墨烯调谐用于开关、传感的动态可重构Fano超——
  • [2015][note]基于薄向列液晶层的可调谐THz fishnet超材料快速开关——
  • [52PJ] Java面向对象笔记(转自52 1510988116)
  • [AAuto]给百宝箱增加娱乐功能