关于Docker镜像再封装的详细文档
前言
一般情况下,docker官网的镜像仓库非常完备,而且还有各大厂商的对外镜像仓库提供补充,我们的选择面非常之广,基本都能满足我们的需求。
可是,当我们基于一个镜像的容器,作出了修改、开发、部署之后,把这个已经被改变的容器封装成一个镜像,好像也变成了一种需求。
比如:我们下载了一个linux镜像,基于这个镜像我们启动了容器,在容器里面我们部署了自己开发的业务系统,或者是一个HTTP服务器,更或者是一个符合自己实际需求的ZABBIX监控系统,之后,我们为了分发或者方便使用,把这个经过业务系统部署的容器,进行了封装成镜像的操作。
下面的内容,我们将以centos+http为例子,进行实际操作演示。
注意:宿主机为oracle linux 7.9,IP地址为192.168.31.51。
1、DOCKER状态检查
我们查看docker的运行状态,并检查已经下载的镜像。
# systemctl status docker
# docker images
2、下载镜像
我们访问http://hub.docker.com,搜索一个我们想要部署centOS版本,如图所示,我们选择了centOS 7.9。
注:为什么在这里不用docker search centos命令进行搜索,因为在这里搜索出来的结果,很难分辨准确的版本号/TAG,可能你下载下来的镜像是latest版本。
# docker pull centos:centos7.9.2009
# docker images
3、启动镜像。
# docker run -d -p 5080:80 -p 5022:22 --privileged=true centos:centos7.9.2009 /usr/sbin/init
# docker ps
如上图所示,已经从镜像启动容器,并且容器也已经正常运行。
4、配置容器
进入容器,并配置YUM信息。
[root@oel79 ~]# docker ps
[root@oel79 ~]# docker exec -it b96b2ffe448d /bin/bash
[root@b96b2ffe448d /]# cat /etc/yum.repos.d/system.repo
[root@b96b2ffe448d /]# yum clean all
[root@b96b2ffe448d /]# yum makecache
注意:
进入容器的操作,只能以容器ID来识别;其次YUM的配置根据实际需要进行即可,文中192.168.31.99是我为了测试方便,搭建的本地网络YUM源。
如果想尝试搭建本地网络YUM源,以及更多的关于YUM和DNF的知识,可以访问本公众号文章:
LINUX环境下YUM的各种配置总结http://mp.weixin.qq.com/s?__biz=MzI0MzczNDA0NA==&mid=2247483713&idx=1&sn=cc2cc0cfceca70370f3a0c95a422f01a&chksm=e969c232de1e4b24c0016109cb541f2316a453d2f90f7cb7a4caf5008a24e7904e2a306654ec&scene=21#wechat_redirect
5、测试容器访问
在客户端使用ssh协议访问容器的对外映射端口192.168.31.51:5022,提示无法访问。
进入容器,检查sshd服务,提示没有这个服务器;
安装SSHD服务:
[root@b96b2ffe448d /]# yum install -y openssh-*
[root@b96b2ffe448d /]# rpm -ql openssh-server
[root@b96b2ffe448d /]# systemctl start sshd
[root@b96b2ffe448d /]# systemctl status sshd
再次在客户端测试对容器的SSH连接,正常访问。
在客户端测试访问http://192.168.31.51:5080,提示无法访问此网页。
安装HTTPD服务:
[root@b96b2ffe448d /]# yum install -y httpd
[root@b96b2ffe448d /]# systemctl start httpd
[root@b96b2ffe448d /]# systemctl enabled httpd
[root@b96b2ffe448d /]# systemctl status httpd
再次在客户端测试http://192.168.31.51:5080,正常访问。
进入容器输入init 6,重新启动容器,继续测试ssh和httpd访问,正常。
6.查看centos镜像的分层结构。
如图所示,我们从docker官方下载的centos镜像总共三层。
7.封装镜像
经过前面的测试,我们知道centos镜像原本是没有ssh和http服务的,而目前,在基于centos启动的容器中,SSH和HTTP服务均正常运行,我们现在尝试将其进行封装。
# docker commit b96b2ffe448d centos-new
# docker images
如上图所示,我们封装了一个名称为centos-new的镜像,我们再次查看这个镜像的分层结构。
如下图所示,我们刚封装的centos-new镜像已经有了总共四层。
8、启动新封装的镜像。
# docker run -d -p 9080:80 -p 9022:22 --privileged=true centos-new:latest /usr/sbin/init
# docker ps
如图所示,新封装的镜像被启动到容器,容器的80端口被映射到宿主机的9080端口,而22端口被映射到宿主机的9022端口。
9、测试新容器的访问
在客户端使用ssh协议测试192.168.31.51:9022的访问,正常。
在客户端使用浏览器测试http://192.168.31.51:9080的访问,正常。
至此,我们完成了docker镜像的封装测试,接下来我们可以把封装好的镜像进行上传,或者搭建自己网络内的docker本地仓库,进行这个镜像的分发,可以参考文档:Linux环境中部署docker私有仓库Registry实战文档http://mp.weixin.qq.com/s?__biz=MzI0MzczNDA0NA==&mid=2247486479&idx=1&sn=ed2172ccd7f98c653ff3127e4f53f726&chksm=e969cf7cde1e466a02645235f4ed8d5751fea2bd7d0d86f712b925054988f86e585ce07494bc&scene=21#wechat_redirect
关于Docker镜像再封装的详细文档相关推荐
- Docker详细文档
docker详细文档 1.什么是docker 解决了什么难点 在开发中,经常会遇到本地环境与生产环境不一致,然后开发和运维言语沟通或者武力沟通的情况,相互甩锅,程序员最常说的一句话就是:"为 ...
- promethues+alertmanager+grafana监控docker容器和报警—基于手动配置和文件自动发现—详细文档
promethues+alertmanager+grafana监控docker容器和报警-基于手动配置和文件自动发现-详细文档 相关配套软件包网盘下载链接如下: 网盘地址: https://url28 ...
- SpringCloud从入门到精通(超详细文档二)
上一篇文档(SpringCloud从入门到精通之超详细文档一)已经对Springboot/SpringCloud做了简单的介绍以及应用讲解,下面将继续为大家介绍SpringCloud后续应用. 第12 ...
- Java学习笔记整理-知识梳理+JDK1.8详细文档
链接:java开发手册 提取码:kes8 链接:JDK1.8详细文档 提取码:n9zo JavaSE 面向对象编程(Object-oriented programming) 封装 类(class) 类 ...
- Oracle单实例通过DG迁移至RAC集群(Oracle 11g 超详细文档)
实验:Oracle单实例通过DG迁移至RAC集群(Oracle 11g 超详细文档) 步骤1:Oracle单实例搭建 1. 系统环境检查 2. 创建用户.组,配置环境变量.安装目录 3. 安装Orac ...
- 不写代码建博客!在浏览器完成博客搭建,有超详细文档,小白轻松搞定
文档地址:Daymd. 仓库地址:inannan423/Daymd: 个人站点生成器,可以在浏览器完成全部操作!从搭建到部署都可以在浏览器中完成,不需要本地环境.附详细文档. (github.com) ...
- promethues+alertmanager+grafana监控mysql和报警—详细文档
promethues+alertmanager+grafana监控mysql和报警-详细文档 相关配套软件包网盘下载链接如下: 网盘地址: https://url28.ctfile.com/f/371 ...
- 【开发教程10】疯壳·开源蓝牙智能健康手表-OTA镜像制作及下载技术文档
DA14580(SDK5) --疯壳·智能穿戴系列 OTA镜像制作及下载技术文档 一.镜像制作 打开相关准备文件夹下的 图1 解压,出来如下图所示. 图2 按照官方文档把两份代码的 hex 改好名字后 ...
- CalendarView使用详细文档(一个很不错的日历控件)
github地址:https://github.com/huanghaibin-dev/CalendarView CalendarView使用详细文档 日历控件定制是移动开发平台上比较常见的而且比较难 ...
- 在Linux 安装Python3.5.6详细文档!!!!
在Linux 安装Python3.5.6详细文档!!!! 1.安装相关依赖库(工具包) yum install gcc patch libffi-devel python-devel zlib-de ...
最新文章
- 怎样新建Oracle数据库
- Oracle 查看表空间、数据文件的大小及使用情况
- matlab padarray函数详解
- Android 获取天气数据
- 字符、字符串和文本的处理之String类型
- 题外话:我想立刻辞职,然后闭关学习编程语言,我给自己3个月时间学习C语言!这样行的通吗...
- Laravel5.4 导出Excel表格
- 百度 PaddlePaddle开源视频分类模型Attention Cluster,曾夺挑战赛冠军
- winrar64位怎么破解
- java.lang.NoClassDefFoundError:org.ksoap2.seri...
- 幻读Java_关于幻读 - hellopretty - 博客园
- RASP技术进阶系列(一):与WAF的“相爱相杀”
- 设计模式----创建型设计模式(单例模式、工厂方法模式、构建者模式)
- iOS 开发资源汇总 肯定有你想要的资源(Continuously updated)
- datastage transformer控件详解
- python tableau工作流_提取数据
- 计算机计算出负数,cfa计算器 负数
- 创建多币种多系统 EA 交易
- 去了家新公司,技术总监不让用 IntelliJ IDEA想离职了
- 《数字图像处理(第三版)》 第二章 数字图像基础 笔记2(图像感知和获取)
热门文章
- 车辆销售系统用例_销售管理系统的UML分析与设计
- WordPress直接调用头像地址
- 用Java弹个Freepiano钢琴《The truth that you leave》
- zendstudio php6.5,ZendStudio13.6配置composer.phar和中文镜像、如何更新php项目依赖组件方法...
- vc2012编译thrift
- java三大特征_java三大特性是什么?
- 三星S4使用体验(Markdown版)
- android手机访问协议页面,易语言修改IE协议头留言手机版网页
- FPGA入门实验试验报告
- 初学者福利:机器学习项目清单