前言

一般情况下,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镜像再封装的详细文档相关推荐

  1. Docker详细文档

    docker详细文档 1.什么是docker 解决了什么难点 在开发中,经常会遇到本地环境与生产环境不一致,然后开发和运维言语沟通或者武力沟通的情况,相互甩锅,程序员最常说的一句话就是:"为 ...

  2. promethues+alertmanager+grafana监控docker容器和报警—基于手动配置和文件自动发现—详细文档

    promethues+alertmanager+grafana监控docker容器和报警-基于手动配置和文件自动发现-详细文档 相关配套软件包网盘下载链接如下: 网盘地址: https://url28 ...

  3. SpringCloud从入门到精通(超详细文档二)

    上一篇文档(SpringCloud从入门到精通之超详细文档一)已经对Springboot/SpringCloud做了简单的介绍以及应用讲解,下面将继续为大家介绍SpringCloud后续应用. 第12 ...

  4. Java学习笔记整理-知识梳理+JDK1.8详细文档

    链接:java开发手册 提取码:kes8 链接:JDK1.8详细文档 提取码:n9zo JavaSE 面向对象编程(Object-oriented programming) 封装 类(class) 类 ...

  5. Oracle单实例通过DG迁移至RAC集群(Oracle 11g 超详细文档)

    实验:Oracle单实例通过DG迁移至RAC集群(Oracle 11g 超详细文档) 步骤1:Oracle单实例搭建 1. 系统环境检查 2. 创建用户.组,配置环境变量.安装目录 3. 安装Orac ...

  6. 不写代码建博客!在浏览器完成博客搭建,有超详细文档,小白轻松搞定

    文档地址:Daymd. 仓库地址:inannan423/Daymd: 个人站点生成器,可以在浏览器完成全部操作!从搭建到部署都可以在浏览器中完成,不需要本地环境.附详细文档. (github.com) ...

  7. promethues+alertmanager+grafana监控mysql和报警—详细文档

    promethues+alertmanager+grafana监控mysql和报警-详细文档 相关配套软件包网盘下载链接如下: 网盘地址: https://url28.ctfile.com/f/371 ...

  8. 【开发教程10】疯壳·开源蓝牙智能健康手表-OTA镜像制作及下载技术文档

    DA14580(SDK5) --疯壳·智能穿戴系列 OTA镜像制作及下载技术文档 一.镜像制作 打开相关准备文件夹下的 图1 解压,出来如下图所示. 图2 按照官方文档把两份代码的 hex 改好名字后 ...

  9. CalendarView使用详细文档(一个很不错的日历控件)

    github地址:https://github.com/huanghaibin-dev/CalendarView CalendarView使用详细文档 日历控件定制是移动开发平台上比较常见的而且比较难 ...

  10. 在Linux 安装Python3.5.6详细文档!!!!

    在Linux 安装Python3.5.6详细文档!!!! 1.安装相关依赖库(工具包) yum install gcc patch libffi-devel python-devel  zlib-de ...

最新文章

  1. 怎样新建Oracle数据库
  2. Oracle 查看表空间、数据文件的大小及使用情况
  3. matlab padarray函数详解
  4. Android 获取天气数据
  5. 字符、字符串和文本的处理之String类型
  6. 题外话:我想立刻辞职,然后闭关学习编程语言,我给自己3个月时间学习C语言!这样行的通吗...
  7. Laravel5.4 导出Excel表格
  8. 百度 PaddlePaddle开源视频分类模型Attention Cluster,曾夺挑战赛冠军
  9. winrar64位怎么破解
  10. java.lang.NoClassDefFoundError:org.ksoap2.seri...
  11. 幻读Java_关于幻读 - hellopretty - 博客园
  12. RASP技术进阶系列(一):与WAF的“相爱相杀”
  13. 设计模式----创建型设计模式(单例模式、工厂方法模式、构建者模式)
  14. iOS 开发资源汇总 肯定有你想要的资源(Continuously updated)
  15. datastage transformer控件详解
  16. python tableau工作流_提取数据
  17. 计算机计算出负数,cfa计算器 负数
  18. 创建多币种多系统 EA 交易
  19. 去了家新公司,技术总监不让用 IntelliJ IDEA想离职了
  20. 《数字图像处理(第三版)》 第二章 数字图像基础 笔记2(图像感知和获取)

热门文章

  1. 车辆销售系统用例_销售管理系统的UML分析与设计
  2. WordPress直接调用头像地址
  3. 用Java弹个Freepiano钢琴《The truth that you leave》
  4. zendstudio php6.5,ZendStudio13.6配置composer.phar和中文镜像、如何更新php项目依赖组件方法...
  5. vc2012编译thrift
  6. java三大特征_java三大特性是什么?
  7. 三星S4使用体验(Markdown版)
  8. android手机访问协议页面,易语言修改IE协议头留言手机版网页
  9. FPGA入门实验试验报告
  10. 初学者福利:机器学习项目清单