【系列1】使用Dockerfile创建带sshd服务的Centos Docker镜像
使用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镜像相关推荐
- 创建带Tomcat服务的Centos Docker镜像
Tomacat服务器是一个免费的开源代码的Web应用服务器,属于轻量级应用服务器,在中小型系统和并发访问用户不是很多的场合下普遍使用,是开发和高度JSP程序的首选. 下面我就分步骤向大家介绍如何创建 ...
- 【系列7】使用Dockerfile创建带mysql5.7的Centos Docker镜像1
1.进入Linux后,使用Docker命令下载MySQL,命令如: docker pull mysql:5.7 运行该命令后,则会显示以下日志: [root@localhost ~]# docker ...
- 【系列7】使用Dockerfile创建带mysql的Centos Docker镜像
下面用官方的rpm源包安装mysql过慢不主张采用yum这种方式 1. 下载文件 从GitHub Dockerpool社区下载MySQL镜像项目: [root@docker1 ~]# git c ...
- 【系列8】使用Dockerfile创建带MongoDB的Centos Docker镜像
MongoDB是一款可扩展.高性能的开源文档(Document-Oriented)数据库.它采用C++开发,支持复杂的数据类型和强大的查询语言,提供了关系数据库的绝大部分功能.MongoDB由于其高性 ...
- Docker(2):使用Dockerfile创建支持SSH服务的镜像
1.创建工作目录 # mkdir sshd_ubuntu # ls 在其中,创建Dockerfile和run.sh文件 # cd sshd_ubuntu/ # touch Dockerfile run ...
- centos7镜像加速_使用阿里云容器镜像服务托管私有Docker镜像
一个只用markdown语法编写文章的90后野路子Web架构师,每天都分享一些有用的知识点,欢迎关注- 前言 概述 本文主要讲解如何托管自己的Docker镜像到阿里云容器镜像服务ACR上,以及如何使用 ...
- docker 修改阿里镜像源_使用阿里云容器镜像服务托管私有Docker镜像
一个只用markdown语法编写文章的90后野路子Web架构师,每天都分享一些有用的知识点,欢迎关注- 前言 概述 本文主要讲解如何托管自己的Docker镜像到阿里云容器镜像服务ACR上,以及如何使用 ...
- 【系列5】使用Dockerfile创建带weblogic的Centos Docker镜像
Weblogic是一个基于Java EE架构的中间件(应用服务器),WebLogic由Oracle公司维护. WebLogic是用于开发.集成.部署和管理大型分布式Web应用.网络应用和数据库应用的J ...
- docker容器 eureka 集成_微服务:基于 Docker 的微服务架构之分布式企业级实践参考...
编者按:本文分享自CSDN技术博客,作者为 FlyWine,所有权归原著者.若有不妥,联系本头条号以做必要处理. 目录 Microservice 和 Docker 服务发现模式 客户端发现模式 Net ...
- 「六」创建一个带 weblogic 服务的基础镜像
Weblogic Weblogic 简单介绍以及其在 Docker 环境下的特殊应用 WebLogic是美国Oracle公司出品的一个application server确切的说是一个基于JAVAEE ...
最新文章
- AI一分钟 | 谷歌遭特朗普指责;程维、柳青道歉:顺风车业务无限期下线
- 【OpenCV 4开发详解】中值滤波
- 解决naigos+pnp4nagios部分不出图的问题
- First Week :Linux系统学习
- python编程思维导图_用来梳理 Python 编程核心知识15张思维导图
- 深入了解以太坊虚拟机第4部分——ABI编码外部方法调用的方式
- 网易云 IM SDK 4.2.0版本逆袭升级!
- cxf整合spring代码
- 【SQLAlchemy】MySQL server has gone away 原因分析、解决方法
- android 屏幕旋转不重新加载,Android webview旋转屏幕导致页面重新加载问题解决办法...
- SpringBoot:Actuator 监控管理工程各项信息
- JDBC Statements, PreparedStatement
- Neo4j HA环境配置
- svm工具箱快速入手简易教程
- 23. WebVR播放器: 消费升级带来的机遇
- 拓端tecdat|python图工具中基于随机块模型动态网络社团检测网络图
- 网站运营模式之行业网站分析
- vue-element-admin的二次开发
- 【熟知水星无线路由器的安装步骤】
- SVG SMIL 动画(基本动画 、变换动画)
热门文章
- 在燃烧的远征寻找冰封王座:电竞之春下的游戏直播
- 特聘专家朱嘉明:2022,数字经济迈入历史新阶段
- 根据域名快速查询IP
- 三星s8 android9.0官方rom,三星S8+港版安卓9官方固件rom刷机包:TGY-G9550ZHU3DSD3
- 河北工业大学c语言寻宝游戏,计算机技术基础(c语言)课程设计 寻宝游戏.doc
- android usb 读写权限,Android默认给予USB读写权限,去掉受权对话框
- mysql order优化2019_MySQL 效率提高N倍的19条MySQL优化秘籍
- c语言recy未定义标识符,求解这个C语言子程序什么意思
- 互联网大数据面试题集锦
- EXCEL中文转英文首字母拼写