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 

最新文章

  1. MapReduce实现手机上网日志分析(分区)
  2. Unable to locate secure storage module异常的解决方案
  3. HDU Coprime
  4. 移植UE4的模型操作到Unity中
  5. AngularJs——grunt神器的使用
  6. Java程序员最常用的8个Java日志框架
  7. 简单实现web单点登录
  8. C#.NET开发ActiveX控件
  9. HTML5 Canvas实现刮刮卡效果实例
  10. C# 文字转换最简单的方法
  11. 微服务架构介绍和RPC框架对比
  12. JAVA的Date类与Calendar类(常用方法)
  13. Python+requests+unittest+excel实现接口自动化测试框架
  14. pyc文件
  15. 「JLOI2015」骗我呢 解题报告?
  16. eclipse.ini 修改默认编码为 UTF-8
  17. sql 中常见的控制流语句
  18. 【CF603E】Pastoral Oddities cdq分治+并查集
  19. hdu1285确定比赛名次(拓扑排序+优先队列)
  20. 场景调研 persona

热门文章

  1. ES6 Generator 异步编程解决方案&&&promise
  2. SpringMVC Http请求工具代码类
  3. swap的实现(没有中间变量)
  4. xsd
  5. 【APP测试(Android)】--硬件测试
  6. ibatis (六) dynamic的用法
  7. JavaScript 函数定义和调用
  8. C++探究transform算法
  9. LwIP协议栈接口
  10. MySQL八、备份和还原