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

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/work

RUN 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 all

RUN 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-docker
  HostName 10.19.35.220
  User root
  Port 2226
  IdentityFile "C:\Users\uersname\.ssh\id_rsa"

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

撒花!!!

最近更新

  1. docker php8.1+nginx base 镜像 dockerfile 配置

    2024-07-19 13:58:03       67 阅读
  2. Could not load dynamic library ‘cudart64_100.dll‘

    2024-07-19 13:58:03       72 阅读
  3. 在Django里面运行非项目文件

    2024-07-19 13:58:03       58 阅读
  4. Python语言-面向对象

    2024-07-19 13:58:03       69 阅读

热门阅读

  1. C语言指针的理解

    2024-07-19 13:58:03       19 阅读
  2. Centos---命令详解 vi 系统服务 网络

    2024-07-19 13:58:03       22 阅读
  3. 基于深度学习的数据增强

    2024-07-19 13:58:03       21 阅读
  4. 【题解】StarryCoding P259 好奇怪好奇怪

    2024-07-19 13:58:03       22 阅读
  5. PHP 调用 JD 详情 API 接口:数据获取新途径

    2024-07-19 13:58:03       23 阅读
  6. 使用git提交代码时候出现403怎么解决

    2024-07-19 13:58:03       19 阅读
  7. tensorrt-llm知识

    2024-07-19 13:58:03       19 阅读
  8. 芯片基础 | `wire`类型引发的学习

    2024-07-19 13:58:03       19 阅读
  9. oracle extract的使用

    2024-07-19 13:58:03       24 阅读
  10. mysql、oracle、db2数据库连接参数

    2024-07-19 13:58:03       20 阅读
  11. 什么是TCP/IP协议

    2024-07-19 13:58:03       24 阅读
  12. 初识synchronized

    2024-07-19 13:58:03       23 阅读
  13. 【QT】001第一个程序

    2024-07-19 13:58:03       19 阅读
  14. 【深度学习】CycleGAN

    2024-07-19 13:58:03       22 阅读