利用Dockerfile文件创建带有sshd服务的centos镜像

标签:dockerfile

1、安装docker并启动docker,不在赘述

2、创建使用Dockerfile安装sshd服务的目录,名字路径自定义

mkdir sshd_centos

cd sshd_centos

3、编辑启动sshd服务的脚本文件

vim run.sh内容为

#!/bin/bash

/usr/sbin/sshd -D

4、生成宿主机和docker容器通讯的密钥

ssh-keygen -t rsa -b 2048 -f /etc/ssh/ssh_host_rsa_key

此时进入/etc/ssh/目录下可查看到一系列密钥文件,

5、拷贝文件到sshd_centos目录下,此时在sshd_centos目录下,下面的./表示当前路径

cp /etc/ssh/ssh_host_rsa_key ./

cp /etc/ssh/ssh_host_ecdsa_key ./

cp /etc/ssh/ssh_host_ed25519_key ./

cp /etc/ssh/ssh_host_rsa_key.pub ./

cat /etc/ssh/ssh_host_rsa_key.pub > authorized_keys

6、编辑Dockerfile文件vim Dockerfile,内容如下

#生成的镜像以centos为基础镜像
FROM centos #开发者信息及其他
MAINTAINER by test #升级系统
RUN yum -y update #安装openssh-server
RUN yum install -y openssh-server #修改ssh_config
#RUN sed -i ‘s/UsePAM yes/UsePAM no/g‘ /etc/ssh/sshd_config #将密钥文件复制到/etc/ssh目录中
ADD ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key
RUN chmod /etc/ssh/ssh_host_rsa_key
ADD ssh_host_rsa_key.pub /etc/ssh/ssh_host_rsa_key.pub
ADD ssh_host_ed25519_key /etc/ssh/ssh_host_ed25519_key
RUN chmod /etc/ssh/ssh_host_ed25519_key
ADD ssh_host_ecdsa_key /etc/ssh/ssh_host_ecdsa_key
RUN chmod /etc/ssh/ssh_host_ecdsa_key
RUN mkdir -p /root/.ssh
ADD authorized_keys /root/.ssh/authorized_keys #将ssh服务启动脚本复制到/usr/local/sbin目录中,并附加执行权限
ADD run.sh /usr/local/sbin/run.sh
RUN chmod /usr/local/sbin/run.sh #变更root密码
RUN echo "root:111111" |chpasswd #开启22端口
EXPOSE #运行脚本,启动ssh服务
CMD ["/usr/local/sbin/run.sh"]

保存退出,查看sshd_centos目录下文件

7、生成镜像文件

docker  build -t sshd:dockerfile .

注意:-t后面是自定义容器名,最后有一个点. 表示当前目录下的Dockerfile文件

有信息生成如图:

[root@localhost sshd_centos]# docker  build -t sshd:dockerfile .
Sending build context to Docker daemon 10.24 kB
Step : FROM centos
---> 0584b3d2cf6d
Step : MAINTAINER by test
---> Using cache
---> 7e4b547e1ebb
Step : RUN yum -y update
---> Using cache
---> d1465158a06a
Step : RUN yum install -y openssh-server
---> Using cache
---> 28f2664377fe
Step : ADD ssh_host_rsa_key /etc/ssh/ssh_host_rsa_key
---> Using cache
---> 7c5b2d4961ad
Step : RUN chmod /etc/ssh/ssh_host_rsa_key
---> Using cache
---> 3f077c76833b
Step : ADD ssh_host_rsa_key.pub /etc/ssh/ssh_host_rsa_key.pub
---> Using cache
---> a19f5f7614ed
Step : ADD ssh_host_ed25519_key /etc/ssh/ssh_host_ed25519_key
---> Using cache
---> ae26be732d9b
Step : RUN chmod /etc/ssh/ssh_host_ed25519_key
---> Using cache
---> 3c2536ff7d01
Step : ADD ssh_host_ecdsa_key /etc/ssh/ssh_host_ecdsa_key
---> Using cache
---> 0abd210afddc
Step : RUN chmod /etc/ssh/ssh_host_ecdsa_key
---> Using cache
---> 5f572583b56f
Step : RUN mkdir -p /root/.ssh
---> Using cache
---> 2b8b0119e128
Step : ADD authorized_keys /root/.ssh/authorized_keys
---> a9cc6344ae1e
Removing intermediate container 83f5d55406a4
Step : ADD run.sh /usr/local/sbin/run.sh
---> 934bffd67cf3
Removing intermediate container 70ab6514ede8
Step : RUN chmod /usr/local/sbin/run.sh
---> Running in 9e8dcb463340
---> c5081c2b2c26
Removing intermediate container 9e8dcb463340
Step : RUN echo "root:111111" |chpasswd
---> Running in f77d5e369d75
---> cfaf42cdb71e
Removing intermediate container f77d5e369d75
Step : EXPOSE
---> Running in e3661f77776c
---> f5dbcb5993d1
Removing intermediate container e3661f77776c
Step : CMD /usr/local/sbin/run.sh
---> Running in 6581a56507e0
---> 9e545cc21ef8
Removing intermediate container 6581a56507e0
Successfully built 9e545cc21ef8

表示成功

表示生成镜像成功

可用docker images查看

8、运行镜像生成容器

docker run -d -p 10022:22 sshd:dockerfile /usr/local/sbin/run.sh

将宿主机的10022端口映射到容器的22端口,并启动sshd服务。

docker ps 查看容器

9、在终端使用ssh 宿主机IP 10022是否可登陆   ssh 宿主机ip -p10022

另:若无法登陆,则使用docker logs 容器ID查看日志

利用Dockerfile文件创建带有sshd服务的centos镜像的更多相关文章

  1. 使用commit方式构建具有sshd服务的centos镜像

    一般我们是通过SSH服务来管理服务器的,但是现在很多Docker镜像不带SSH服务,那我们该如何来管理这些容器呢?现在我们通常使用attach和nsenter工具.但是都无法解决远程管理容器的问题,当 ...

  2. 基于CentOS的SSHD服务的Docker镜像

    原文地址 1.Dockerfile文件 FROM registry.aliyuncs.com/acs-sample/centos:6 MAINTAINER xuqh "xqh_163@163 ...

  3. 构建一个拥有sshd服务的docker镜像

    不直接描述结果,通过一个过程探究如何写一个 Dockerfile 一.环境 虚拟机CentOS7.4,Docker1.13.1 二.尝试步骤 1.下载基础镜像 docker pull alpine:3 ...

  4. 利用Dockerfile构建一个基于centos 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像

    Dockerfile内容如下: FROM centos MAINTAINER Victor ivictor@foxmail.com WORKDIR /root RUN rm -f /etc/yum.r ...

  5. 利用Dockerfile构建一个基于CentOS 7镜像

    利用Dockerfile构建一个基于CentOS 7,包括java 8, tomcat 7,php ,mysql+mycat的镜像. Dockerfile内容如下: FROM centosMAINTA ...

  6. 利用dockerfile定制镜像

    利用dockerfile定制镜像 镜像的定制就是定制每一层所添加的配置.文件.如果可以吧每一层修改.安装.构建.操作的命令都写入到一个脚本,用脚本来构建.定制镜像,这个脚本就是dockerfile. ...

  7. 利用dockerfile制作基于centos7的lnmp镜像(亲测,详细版)

    首先呢,这篇文章,也是小弟参考了许多文章,自己整理出来的,有很多不足之处还有待加强,期待各位评论. > LNMP 是代表 Linux 系统下的 Nginx.Mariadb.PHP 相结合而构建成 ...

  8. Docker定制容器镜像(利用Dockerfile文件)

    1.创建Dockerfile文件 新建一个目录,在里面新建一个dockerfile文件(新建一个的目录,主要是为了和以防和其它dockerfile混乱 ) [root@docker01 myfiles ...

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

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

随机推荐

  1. xammp 配置虚拟主机

    ## This is the main Apache HTTP server configuration file. It contains the# configuration directives ...

  2. 前端学习——使用Ajax方式POST JSON数据包

    0.前言     本文解释怎样使用Jquery中的ajax方法传递JSON数据包,传递的方法使用POST(当然PUT又有时也是一个不错的选择).POST JSON数据包相比标准的POST格式可读性更好 ...

  3. 利用泛型和反射,管理配置文件,把Model转换成数据行,并把数据行转换成Model

    利用泛型和反射,管理配置文件,把Model转换成数据行,并把数据行转换成Model   使用场景:网站配置项目,为了便于管理,网站有几个Model类来管理配置文件, 比如ConfigWebsiteMo ...

  4. Mtk Camera

    MTK6577+Android之Camera驱动 http://blog.csdn.net/loongembedded/article/details/41695205 MTK Camera 开机启动 ...

  5. Linux 下编译安装OpenCV(zhuanzai)

    http://www.cnblogs.com/emouse/archive/2013/02/22/2922940.html Cmake的安装 OpenCV 2.2以后版本需要使用Cmake生成make ...

  6. PS 魔法棒

    魔术棒工具是通过选取图像中颜色相近或大面积单色区域的像素来制作选区,魔术棒用于纯色背景中较多. 容差数值越大,选择出的选区就越大,容差越小,对颜色差别的要求也就越严格,选择出的选区也就越小 按住shi ...

  7. NTAG 标签

    NTAG 标签 这里描述针对 NTAG213.而 NTAG215/216只是容量不同,其它功能都一样.  UID UID 有 7 bytes.上图中有 9 bytes 的 serial number ...

  8. 使用Apache Commons Chain(转载)

    原博客出处:http://phil-xzh.iteye.com/blog/321536 使用Commons Chain 作为程序开发人员,我们经常需要对一个实际上程序性的系统应用面向对象的方法.商业分 ...

  9. scikit-learn:4.2. Feature extraction(特征提取,不是特征选择)

    http://scikit-learn.org/stable/modules/feature_extraction.html 带病在网吧里. ..... 写.求支持. .. 1.首先澄清两个概念:特征 ...

  10. Hibernate的检索策略和优化

    一.检索策略概述 当我们实现了一对多或者多对多的映射后,在检索数据库时需要注意两个问题: 1.使用尽可能小的内存:当 Hibernate 从数据库中加载一个客户信息时, 如果同时加载所有关联这个客户的 ...