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

2.首先创建一个目录ssh_centos

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

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

  1. #!/bin/bash
  2. /usr/sbin/sshd -D

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

  1. $ touch authorized_keys
  2. 将宿主机/root/.ssh/id_rsa.pub拷贝到/home/xm6f/dev/ssh_centos/authorized_keys文件中
  3. $ cat /root/.ssh/id_rsa.pub > authorized_keys
  4. $ cd /home/xm6f/dev/ssh_centos/
  5. $ ls
  6. authorized_keys run.sh
  7. $ cat authorized_keys
  8. 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:

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

为authorized_keys配置777权限 

  1. chmod /home/xm6f/dev/ssh_centos/authorized_keys

5.通过Dockerfile生成ssh_test镜像

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

等待运行完成。

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

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

7.测试镜像,运行容器

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

8.在宿主机上运行

  1. 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. SQL Server 2008 R2 链接 Oracle

    参考网站: SP_addlinkedserver 小结 (oracle,sql server,access,excel) 64位SqlServer通过链接服务器与32位oracle通讯 SQL Ser ...

  2. JVM思考-ClassLoader.loadClasshe和Class.forName区别

    JVM思考-ClassLoader.loadClasshe和Class.forName区别 目录:JVM总括:目录 见博客第四节:JVM总括四-类加载过程.双亲委派模型.对象实例化过程

  3. Git 在团队中的使用--如何正确使用Git Flow

    Git的优点 Git的优点很多,但是这里只列出我认为非常突出的几点. 由于是分布式,所有本地库包含了远程库的所有内容. 优秀的分支模型,打分支以及合并分支,机器方便. 快速,在这个时间就是金钱的时代, ...

  4. 分布式协议学习笔记(三) Raft 选举自编写代码练习

    由于时间安排上的原因,这次的代码写的稍微有些简略,只能算是自己对RAFT协议的一个巩固. 实现定义2个节点,使用读取配置文件来获取IP和端口以及节点ID 网络使用boost同步流程 一个线程收 一个线 ...

  5. 《C#从现象到本质》读书笔记(九)第11章C#的数据结构

    <C#从现象到本质>读书笔记(九)第11章C#的数据结构 C#中的数据结构可以分为两类:非泛型数据结构和泛型数据结构. 通常迭代器接口需要实现的方法有:1)hasNext,是否还有下一个元 ...

  6. Postman入门使用

    Postman 是一个很强大的 API调试.Http请求的工具,方便易用,毋庸置疑. 1.Postman安装 a. 打开谷歌浏览器 b. 进入设置界面 c. 选择扩展程序 d. 选择chrome网上应 ...

  7. UML类图中箭头和线条的含义和用法

    UML类图中箭头和线条的含义和用法 在学习UML过程中,你经常会遇到UML类图关系,这里就向大家介绍一下UML箭头.线条代表的意义,相信通过本文的介绍你对UML中箭头.线条的意义有更明确的认识. AD ...

  8. Codeforces Round #546 (Div. 2) E 推公式 + 线段树

    https://codeforces.com/contest/1136/problem/E 题意 给你一个有n个数字的a数组,一个有n-1个数字的k数组,两种操作: 1.将a[i]+x,假如a[i]+ ...

  9. Wordpress“固定链接”页面出现404原因及解决方法

    编辑配置文件:/etc/apache2/apache2.conf(非常靠后的位置),将里面的AllowOverride选项由None设置为All. <Directory /> Option ...

  10. EBR内容解析

    原先博客放弃使用,几篇文章搬运过来 EBR(Extended Boot Record)即扩展分区引导记录.类似于主引导记录MBR.因为MBR的四条分区信息的限制,可以使用EBR方便扩展. 它的结构与M ...