使用Dockerfile创建
  在第一部分中曾介绍过Dockerfile的基础知识,下面将介绍如何使用Dockerfile来创建一个支持SSH服务的镜像。
 ① 创建工作目录
 首先应创建一个sshd_centos工作目录:
[root@docker1 ~]# mkdir sshd_centos
[root@docker1 ~]# cd sshd_centos/
[root@docker1 sshd_centos]# touch Dockerfile run.sh
[root@docker1 sshd_centos]# ls
Dockerfile  run.sh

② 编写run.sh脚本和authorized_keys文件
[root@docker1 sshd_centos]# vim run.sh
#!/bin/bash
/usr/sbin/sshd -D  
在宿主主机上生成SSH密钥对,并创建authorized_keys文件:
# ssh-keygen -t rsa
....
# cat ~/.ssh/id_rsa.pub >authorized_keys  
    或[root@docker1 ~]# cp /root/.ssh/id_rsa.pub /root/sshd_centos/authorized_keys

③ 编写Dockerfile
 下面是Dockerfile的内容及各部分的注释:
[root@docker1 sshd_centos]# cat Dockerfile
#设置继承镜像
FROM docker.io/centos:latest

#提供一些作者的信息
MAINTAINER from www.dockerpool.com by waitfish

#设置环境变量,所有操作都是非交互式的
ENV DEBIAN_FRONTEND noninteractive

RUN echo "Asia/Shanghai" > /etc/timezone #&& \
        # dpkg-reconfigure -f noninteractive tzdata      #这也是设置时区的
#注意这里要更改系统的时区设置,因为在Web应用中经常会用到时区这个系统变量,默认的centos会让你的应用此程序发生不可思议的效果哦

#下面开始运行命令,此处更改Centos的源为国内阿里的源
RUN yum update
RUN yum install wget -y
RUN wget -O /etc/yum.repos.d/CentOS-Base.repo http://mirrors.aliyun.com/repo/Centos-7.repo
RUN yum repolist

#安装ssh服务
RUN yum install -y openssh-server
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_rsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_ecdsa_key
RUN ssh-keygen -t rsa -f /etc/ssh/ssh_host_ed25519_key

RUN mkdir -p /var/run/sshd
RUN mkdir -p /root/.ssh

#取消pam限制
RUN sed -ri 's/session    required     pam_loginuid.so/#session    required     pam_loginuid.so/g' /etc/pam.d/sshd

#复制配置文件到相应位置,并赋予脚本可执行权限
ADD authorized_keys /root/.ssh/authorized_keys
ADD run.sh /run.sh
RUN chmod 755 /run.sh

#开放端口
EXPOSE 22

#设置自启动命令
CMD ["/run.sh"]
 
④ 创建镜像
在sshd_centos目录下,使用docker build
[root@docker1 sshd_centos]# docker build -t sshd:centos .
如果使用Dockerfile创建自定义镜像,那么需要注意的是Docker会自动删除中间临时创建的层,还需要注意每一步的操作和编写的Dockerfile中命令的对应关系。
命令执行完毕后,如果可见"Successfully built XXX"字样,则说明镜像创建成功。可以看到,
[root@docker1 ~]# docker images
REPOSITORY           TAG                 IMAGE ID            CREATED             SIZE
sshd                 centos              fbbedf7fb2a1        16 hours ago        301.9 MB
......

⑤ 测试镜像,运行容器
 使用刚才创建的sshd:centos镜像来运行一个容器。直接启动镜像,映射容器的22端口到本地的10122端口:
[root@docker1 ~]# docker run -d -p 10122:22 sshd:centos
c72fecc1e7c62a4113a1ff6673b55f43e24cac66ad29ad2d339df0ee793e4928
[root@docker1 ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                                      NAMES
c72fecc1e7c6        sshd:centos         "/run.sh"                10 seconds ago      Up 8 seconds        0.0.0.0:10122->22/tcp                      hopeful_goldwasser    
在宿主主机新打开一个终端,连接到新建的容器:
Last login: Tue Nov 14 09:51:22 2017 from 10.0.0.1
[root@docker1 ~]# ssh 10.0.0.10 -p 10122
The authenticity of host '[10.0.0.10]:10122 ([10.0.0.10]:10122)' can't be established.
RSA key fingerprint is SHA256:X3Rf7GKXCkxhFYpc5SkiKScYHq7tuVidbbc3YaJk/yg.
RSA key fingerprint is MD5:de:7b:00:00:90:ec:f0:51:35:4a:66:60:49:a2:42:f2.
Are you sure you want to continue connecting (yes/no)? yes
Warning: Permanently added '[10.0.0.10]:10122' (RSA) to the list of known hosts.
[root@c72fecc1e7c6 ~]# exit
logout
Connection to 10.0.0.10 closed.
[root@docker1 ~]# ssh 10.0.0.10 -p 10122
Last login: Tue Nov 14 02:07:17 2017 from 10.0.0.10
[root@c72fecc1e7c6 ~]# exit
logout
Connection to 10.0.0.10 closed.

转载于:https://blog.51cto.com/sf1314/1981499

【系列1】使用Dockerfile创建带sshd服务的Centos Docker镜像相关推荐

  1. 创建带Tomcat服务的Centos Docker镜像

    Tomacat服务器是一个免费的开源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下普遍使用,是开发和高度JSP程序的首选.  下面我就分步骤向大家介绍如何创建 ...

  2. 【系列7】使用Dockerfile创建带mysql5.7的Centos Docker镜像1

    1.进入Linux后,使用Docker命令下载MySQL,命令如: docker pull mysql:5.7 运行该命令后,则会显示以下日志: [root@localhost ~]# docker ...

  3. 【系列7】使用Dockerfile创建带mysql的Centos Docker镜像

    下面用官方的rpm源包安装mysql过慢不主张采用yum这种方式 1. 下载文件    从GitHub Dockerpool社区下载MySQL镜像项目: [root@docker1 ~]# git c ...

  4. 【系列8】使用Dockerfile创建带MongoDB的Centos Docker镜像

    MongoDB是一款可扩展.高性能的开源文档(Document-Oriented)数据库.它采用C++开发,支持复杂的数据类型和强大的查询语言,提供了关系数据库的绝大部分功能.MongoDB由于其高性 ...

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

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

  6. centos7镜像加速_使用阿里云容器镜像服务托管私有Docker镜像

    一个只用markdown语法编写文章的90后野路子Web架构师,每天都分享一些有用的知识点,欢迎关注- 前言 概述 本文主要讲解如何托管自己的Docker镜像到阿里云容器镜像服务ACR上,以及如何使用 ...

  7. docker 修改阿里镜像源_使用阿里云容器镜像服务托管私有Docker镜像

    一个只用markdown语法编写文章的90后野路子Web架构师,每天都分享一些有用的知识点,欢迎关注- 前言 概述 本文主要讲解如何托管自己的Docker镜像到阿里云容器镜像服务ACR上,以及如何使用 ...

  8. 【系列5】使用Dockerfile创建带weblogic的Centos Docker镜像

    Weblogic是一个基于Java EE架构的中间件(应用服务器),WebLogic由Oracle公司维护. WebLogic是用于开发.集成.部署和管理大型分布式Web应用.网络应用和数据库应用的J ...

  9. docker容器 eureka 集成_微服务:基于 Docker 的微服务架构之分布式企业级实践参考...

    编者按:本文分享自CSDN技术博客,作者为 FlyWine,所有权归原著者.若有不妥,联系本头条号以做必要处理. 目录 Microservice 和 Docker 服务发现模式 客户端发现模式 Net ...

  10. 「六」创建一个带 weblogic 服务的基础镜像

    Weblogic Weblogic 简单介绍以及其在 Docker 环境下的特殊应用 WebLogic是美国Oracle公司出品的一个application server确切的说是一个基于JAVAEE ...

最新文章

  1. AI一分钟 | 谷歌遭特朗普指责;程维、柳青道歉:顺风车业务无限期下线
  2. 【OpenCV 4开发详解】中值滤波
  3. 解决naigos+pnp4nagios部分不出图的问题
  4. First Week :Linux系统学习
  5. python编程思维导图_用来梳理 Python 编程核心知识15张思维导图
  6. 深入了解以太坊虚拟机第4部分——ABI编码外部方法调用的方式
  7. 网易云 IM SDK 4.2.0版本逆袭升级!
  8. cxf整合spring代码
  9. 【SQLAlchemy】MySQL server has gone away 原因分析、解决方法
  10. android 屏幕旋转不重新加载,Android webview旋转屏幕导致页面重新加载问题解决办法...
  11. SpringBoot:Actuator 监控管理工程各项信息
  12. JDBC Statements, PreparedStatement
  13. Neo4j HA环境配置
  14. svm工具箱快速入手简易教程
  15. 23. WebVR播放器: 消费升级带来的机遇
  16. 拓端tecdat|python图工具中基于随机块模型动态网络社团检测网络图
  17. 网站运营模式之行业网站分析
  18. vue-element-admin的二次开发
  19. 【熟知水星无线路由器的安装步骤】
  20. SVG SMIL 动画(基本动画 、变换动画)

热门文章

  1. 在燃烧的远征寻找冰封王座:电竞之春下的游戏直播
  2. 特聘专家朱嘉明:2022,数字经济迈入历史新阶段
  3. 根据域名快速查询IP
  4. 三星s8 android9.0官方rom,三星S8+港版安卓9官方固件rom刷机包:TGY-G9550ZHU3DSD3
  5. 河北工业大学c语言寻宝游戏,计算机技术基础(c语言)课程设计 寻宝游戏.doc
  6. android usb 读写权限,Android默认给予USB读写权限,去掉受权对话框
  7. mysql order优化2019_MySQL 效率提高N倍的19条MySQL优化秘籍
  8. c语言recy未定义标识符,求解这个C语言子程序什么意思
  9. 互联网大数据面试题集锦
  10. EXCEL中文转英文首字母拼写