欢迎来到尧图网

客户服务 关于我们

您的位置:首页 > 教育 > 培训 > vscode通过ssh链接远程服务器上的docker

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

2024/10/24 16:26:22 来源:https://blog.csdn.net/A_cainiao_A/article/details/140531715  浏览:    关键词: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,点击就可以了。

撒花!!!

版权声明:

本网仅为发布的内容提供存储空间,不对发表、转载的内容提供任何形式的保证。凡本网注明“来源:XXX网络”的作品,均转载自其它媒体,著作权归作者所有,商业转载请联系作者获得授权,非商业转载请注明出处。

我们尊重并感谢每一位作者,均已注明文章来源和作者。如因作品内容、版权或其它问题,请及时与我们联系,联系邮箱:809451989@qq.com,投稿邮箱:809451989@qq.com