1.前面我们学习了使用Dockerfile,那接下来我们就用Dockerfile创建一个支持SSH服务的镜像。

2.首先创建一个目录ssh_centos

[root@rocketmq-nameserver4 ~]# cd /home/xm6f/dev/
[root@rocketmq-nameserver4 dev]# mkdir ssh_centos
[root@rocketmq-nameserver4 dev]# cd ssh_centos

3.在ssh_centos目录中创建Dockerfile和run.sh两个文件
run.sh文件中的内容如下:

#!/bin/bash
/usr/sbin/sshd -D

4.创建authorized_keys,连接ssh时免密登录

$ touch authorized_keys
将宿主机/root/.ssh/id_rsa.pub拷贝到/home/xm6f/dev/ssh_centos/authorized_keys文件中
$ cat /root/.ssh/id_rsa.pub > authorized_keys
$ cd /home/xm6f/dev/ssh_centos/
$ ls
authorized_keys run.sh
$ cat authorized_keys
ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAABAQDJknOFfX+vXDGDesHovetbYezR/8142lDTxD34s33+fxhP40FVmjHN/u09s9bKngR6Jfj3ogbsrfg7gCEMPHnhzVzMxIyJzZBk898Wd7qV0HIJ9BHEo25cjkv4k55yZPkcm309VdMFUOiIp+66dtgmbjG23Zu/VAK+faJEhV1vtLhU7SCGF+yUKPSOmgs0mVCcIJKozv1duw8ERaybLI+UGGCJv9CHCm27rC7e+/dCuyNCRw/35s650AUWfHHgt6/26Med/2xl4tt8RzpDAi2KOlTj5Dqay5uNXC/xCRp7edZkv8UBoEDfbMsuGPJlqeQQEDbkqNb/2sLY5ayCOFRD root@rocketmq-nameserver4

注意:如果/root/.ssh/id_rsa.pub文件不存在,通过如下命令创建:
$ ssh-keygen -t rsa -P ''

接下来就是定义Dockerfile,vim Dockerfile:

FROM centos
MAINTAINER ruthless @qq.com
#安装ssh服务
RUN yum install passwd openssl openssh-server -y
RUN ssh-keygen -q -t rsa -b -f /etc/ssh/ssh_host_rsa_key -N ''
RUN ssh-keygen -q -t ecdsa -f /etc/ssh/ssh_host_ecdsa_key -N ''
RUN ssh-keygen -t dsa -f /etc/ssh/ssh_host_ed25519_key -N '' #创建目录
RUN mkdir -p /root/.ssh
#复制配置文件到相关位置,并修改权限
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod /run.sh
#开放端口22
EXPOSE
#设置容器启动时执行的命令
CMD ["/run.sh"]

为authorized_keys配置777权限 

chmod  /home/xm6f/dev/ssh_centos/authorized_keys

5.通过Dockerfile生成ssh_test镜像

$ ls
authorized_keys Dockerfile run.sh
$ docker build -t ssh_test .

等待运行完成。

6.使用docker images查看刚刚构建的镜像。

$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
ssh_test latest 22085f6119f9 seconds ago 305MB

7.测试镜像,运行容器

$ docker run -d -p : --name sshtest ssh_test
$ docker logs sshtest ##查看容器日志,没报错表示容器运行成功

8.在宿主机上运行

ssh root@192.168.1.160 -p 

使用Dockerfile创建支持SSH服务的镜像的更多相关文章

  1. Docker(2):使用Dockerfile创建支持SSH服务的镜像

    1.创建工作目录 # mkdir sshd_ubuntu # ls 在其中,创建Dockerfile和run.sh文件 # cd sshd_ubuntu/ # touch Dockerfile run ...

  2. Docker使用Dockerfile创建支持ssh服务自启动的容器镜像

    原文链接:Docker使用Dockerfile创建支持ssh服务自启动的容器镜像 1. 首先创建一个Dockerfile文件.文件内容例如以下 # 选择一个已有的os镜像作为基础 FROM cento ...

  3. docker基于Dockerfile命令创建支持ssh服务的镜像

    首先,创建一个sshd_centos工作目录: [root@localhost ~]# mkdir sshd_centos [root@localhost ~]# cd sshd_centos [ro ...

  4. docker如何创建支持SSH服务的镜像

    一般情况下,Linux系统管理员通过SSH服务来管理操作系统,但Docker的很多镜像是不带SSH服务的,那么我们怎样才能管理操作系统呢?在第一部分中我们介绍了一些进入容器的办法,比如用attach. ...

  5. ubuntu-docker入门到放弃(八)创建支持SSH服务的镜像

    我们知道进入docker容器可以使用attach.exec等命令来操作和管理,但是如果需要远程登录并管理容器,就需要ssh服务的支持了. 1.基于commit命令创建 docker提供了commit命 ...

  6. 创建支持SSH服务的镜像

    一.基于commit命令创建 docker commit CONTAINER [REPOSITORY [:TAG]] 1.使用ubuntu镜像创建一个容器 docker run -it ubuntu ...

  7. docker基于commit命令创建支持ssh服务的镜像

    以centos为基础,目的使用ssh服务远程连接docker容器. 环境:宿主机centos7(宿主机ip地址为192.168.164.130),直接搜索docker的centos镜像,下载最新版本. ...

  8. Docker创建支持ssh服务的容器和镜像

    原文链接:Docker创建支持ssh服务的容器和镜像 1. 这里使用的centos作为容器,所以首先下载centos的images # sudo docker pull centos 2. 下载后执行 ...

  9. 创建支持ssh服务的docker容器和镜像

    http://www.kongxx.info/blog/?p=57 1. 这里使用的centos作为容器,所以首先下载centos的imagessudo docker pull centos 2. 下 ...

随机推荐

  1. 优秀的 Spring Cloud 开源软件

    Spring Cloud是一系列框架的有序集合.它利用Spring Boot的开发便利性巧妙地简化了分布式系统基础设施的开发,如服务发现注册.配置中心.消息总线.负载均衡.断路器.数据监控等,都可以用 ...

  2. Swift 模型属性

    1 .  // 定义模型属性时,一般定义为可选的,可以简化代码,不需要写 init 方法    // 如果是基本数据类型,不能设置为可选的,而且要设置初始值 var name: String? pri ...

  3. js将数组根据条件分组

    //将数组根据条件分组 function getTreeDateByParam(list, param, fun){ var data = {}; if(list && list.le ...

  4. s2 Docker环境的快速搭建方法

    常规linux下安装 centos7 下配置docker源并安装 cat >/etc/yum.repos.d/docker.repo< [dockerrepo] name=Docker R ...

  5. [UWP]在UWP平台中使用Lottie动画

    最近QQ影音久违的更新了,因为记得QQ影音之前体验还算不错(FFmepg的事另说),我也第一时间去官网下载体验了一下,结果发现一些有趣的事情. 是的,你没看错,QQ影音主界面上这个动画效果是使用Lot ...

  6. Mybatis延迟加载、缓存

    一.Mybatis中的延迟加载 1.延迟加载背景:Mybatis中Mapper配置文件中的resultMap可以实现高级映射(使用association.collection实现一对一及一对多(多对多 ...

  7. 聚簇索引(clustered index )和非聚簇索引(secondary index)的区别

    这两个名字虽然都叫做索引,但这并不是一种单独的索引类型,而是一种数据存储方式.对于聚簇索引存储来说,行数据和主键B+树存储在一起,辅助键B+树只存储辅助键和主键,主键和非主键B+树几乎是两种类型的树. ...

  8. WebRTC学习之ICE深入理解

    ICE(交互式连接建立---Interactive Connectivity Establishment),是一种标准穿透协议.它利用STUN和TURN服务器来帮助端点建立连接.下图显示了ICE的基本 ...

  9. WebRTC 学习之 Conference 实现混音混屏

    混音 混音的意义就是将多个音频流混成一路音频,在Conference 的实现中有分为终端实现和服务器实现. 1. 终端混音实现: 终端接受到多路(一般是多个用户)的音频流之后,在终端本地将多路音频流混 ...

  10. SVN 客户端 TortoiseSVN 的安装和使用

    关于 参考博客:TortoiseSVN新人使用指南 TortoiseSVN 是一个 Apache Subversion(SVN)客户端,实现为Windows外壳扩展.它直观且易于使用,因为它不需要Su ...