目录
- [1 编译docker image](#1 编译docker image)
-
- [1.1 编译镜像](#1.1 编译镜像)
- [1.2 启动镜像](#1.2 启动镜像)
- [2 在docker container中启动ssh服务](#2 在docker container中启动ssh服务)
-
- [2.1 确认是否安装ssh server](#2.1 确认是否安装ssh server)
- [2.2 修改配置文件](#2.2 修改配置文件)
- [2.3 启动ssh服务](#2.3 启动ssh服务)
- [3 生成ssh key](#3 生成ssh key)
- [4 添加ssh公钥到docker container中](#4 添加ssh公钥到docker container中)
- [5 vscode安装插件Remote - SSH](#5 vscode安装插件Remote - SSH)
- [6 在vscode中配置](#6 在vscode中配置)
1 编译docker image
一般来说没有什么问题,但是我自己编的centos7,无法启动ssh服务。会报类似这种错误。
bash
Failed to get D-Bus connection: Operation not permitted
好多人说是启动docker run的时候忘记加 --privileged,我是了没有用。之后在网上找了很久,发现在dockerfile中这么写,可以解决问题,主要参考这里
bash
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是这样的
bash
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 编译镜像
bash
docker build --build-arg SYSTEM_IMAGE=centos:7 -f Dockerfile . -t image_name
1.2 启动镜像
bash
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
bash
yum list installed | grep openssh-server
如果没有找到,则安装
bash
yum install openssh-server
2.2 修改配置文件
bash
vim /etc/ssh/sshd_config
2.3 启动ssh服务
bash
service sshd start
如果找不到service命令,则
bash
yum reinstall initscripts
或者
yum install initscripts
确认一下服务是否启动
bash
ps -e | grep sshd
3 生成ssh key
在本地机器上执行
bash
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中
bash
vim ~/.ssh/authorized_keys
将公钥拷贝到这里,然后保存。重启ssh服务
bash
service sshd restart
5 vscode安装插件Remote - SSH
6 在vscode中配置
bash
Host remote-docker
HostName 10.19.35.220
User root
Port 2226
IdentityFile "C:\Users\uersname\.ssh\id_rsa"
重新连接远程docker
不出意外,你就会看到remote-docker,点击就可以了。
撒花!!!