docket镜像
1.是什么
镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,包括代码、运行时、库、环境变量和配置文件。
1.1.什么是UnionFS
Unionfs是一个堆栈式的联合文件系统, 2004年由纽约州立大学石溪分校开 发, 它可以把多个目录(也叫分支)内容合并在一起, 而目录的物理位置是分开的.
Unionfs允许只读和可读写目录并存, 就是说可同时删除和增加内容. Unionfs应用的地方很多, 比如在多个磁盘分区上合并不同文件系统的主目录, 或把几张CD光盘合并成一个统一的光盘目录(归档).
另外, 具有写时复制(copy-on-write)功能Unionfs可以把只读和可读写文件系统合并在一起, 虚拟上允许只读文件系统的修改可以保存到可写文件系统当中.
SLAX是一个 192MB大小的Linux发行版, 目标是为便携设备(如usb闪存或mini-cd)开发一个完整功能的Linux操作系统, 人们可以通过引导光盘(或其它编写媒介)直接使用SLAX Linux.
甚至能在没有硬盘的计算机上运行. Unionfs是SLAX系统的一个重要组成部分, 它使SLAX可做为一个真正的Linux系统(具有可写入的根目录树)来运行. 首先我们来了解unionfs.
参考来源:https://www.phpfans.net/article/htmls/200705/MjM3NjA2.html
总结:其实就像java里面的继承体系,文件是层层依赖的,最外层拥有最内层所有的东西,内层是可以公用的。

1.2.镜像文件结构
1.docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统就是UnionFS;
2.在Docker镜像的最底层是bootfs,然后是rootfs,刚启动的时候,首先加载bootfs文件;
3.当bootfs加载完成之后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs;

什么是bootfs:
bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引导加载kernel,不同的Linux 系统 bootfs几乎一样
什么是rootfs:
rootfs (root file system) ,在bootfs之上。包含的就是典型 Linux 系统中的 /dev, /proc, /bin, /etc 等标准目录和文件。rootfs就是各种不同的操作系统发行版,比如Ubuntu,Centos.....
为什么docker容器文件很小:
1.因为bootsf几乎一样,可以使用主机的bootfs,而自己只需要提供rootfs;
2.对于一个精简的os,rootfs可以很小,只需要包括最基本的命令、工具和程序库就可以了;
3.自定义容器打包镜像
案例中以打包一个自己的tomcat为例
1.下载tomcat容器
下载8.0.52版本的tomcat
docker pull tomcat:8.0.52
2.启动tomcat容器
回顾之前讲的启动容器:
docker run -it centos /bin/bash
参数介绍:
--name:"容器新名字": 为容器指定一个名称;
-d: 后台运行容器,并返回容器ID,也即启动守护式容器;
-i:以交互模式运行容器,通常与 -t 同时使用;
-t:为容器重新分配一个伪输入终端,通常与 -i 同时使用;
-P: (大写的P)随机端口映射;
-p: (小写的p)指定端口映射,有以下四种格式
ip:hostPort:containerPort
ip::containerPort
hostPort:containerPort
containerPort
假设启动一个tomcat,以后台形式启动,主机中的端口为:8081,容器中的端口为:8080 命令如下:
docker run -d -p 8081:8080 tomcat:8.0.52

3.访问tomcat

4.修改tomcat
1.进入到tomcat容器中;
2.删除ROOT文件中的所有内容
3.写一个自己的index.html

4.再次访问,看自己写的页面是否生效

5.打包为自己的tomcat镜像
docker commit -m='my tomcat image' -a='zhishidi' 08abc713c71e zsd/tomcat:1.0
参数说明:
-m='镜像描述'
-a='镜像作者'
08abc713c71e :容器id
zsd/tomcat:打包后的镜像名称
1.0 :打包后的版本号

6.启动自己的tomcat镜像

7.访问自己的tomcat镜像

完美!
系统化学习docker教程:
https://www.cnblogs.com/newAndHui/p/13508771.html
docket镜像的更多相关文章
- Apache Thrift 的魅力
WhyApacheThrift 因为最近在项目中需要集成进来一个Python编写的机器学习算法,但是我的后端主要使用的是SpringCloud技术栈. 于是面临着异构语言之间的通信实现方式的抉择. 因 ...
- docker系统化学习图文+视频教程
1.背景 博客对应的视频课程: 9.9元在线学习:https://study.163.com/course/courseMain.htm?share=2&shareId=40000000033 ...
- docket打包镜像内部报错
临时记录,后面再完善 对于前端docker一般不太熟悉,当我们想要打包镜像的时候会去找教程,我按着教程去打包一个使用KOA框架搭建的node服务. 这是一个 koa + ts + pm2的项目 结果出 ...
- 和docket的第一次亲密接触
很久很久以前,第一次听说docker时,感觉很高大上,同时自我感觉会很难.所以一直没有详细了解.前一段时间偶尔看到关于docker的详细介绍,于是乎来了兴趣.自已折腾了一下,发现不是想象中的那么难. ...
- Docket 使用命令
Docket 使用命令 查 # 查询当前可以下载的镜像 docker search httpd |_ NAME:镜像仓库源的名称 |_ DESCRIPTION:镜像的描述 |_ OFFICIAL:是 ...
- NuGet镜像上线试运行
为解决国内访问NuGet服务器速度不稳定的问题,我们用阿里云服务器搭建了一个NuGet镜像,目前已上线试运行. 使用NuGet镜像源的方法如下: 1)NuGet镜像源地址:https://nuget. ...
- SQL Server镜像自动生成脚本
SQL Server镜像自动生成脚本 镜像的搭建非常繁琐,花了一点时间写了这个脚本,方便大家搭建镜像 执行完这个镜像脚本之后,最好在每台机器都绑定一下hosts文件,不然的话,镜像可能会不work 1 ...
- Android SDK 在线更新镜像服务器资源
本文转自:http://blog.kuoruan.com/24.html.感谢原作者. 什么是Android SDK SDK:(software development kit)软件开发工具包.被软件 ...
- Jexus Web Server 完全傻瓜化图文配置教程(基于Ubuntu 12.04.3 64位)[内含Hyper-v 2012虚拟机镜像下载地址]
1. 前言 近日有感许多新朋友想尝试使用Jexus,不过绝大多数都困惑徘徊在Linux如何安装啊,如何编译Mono啊,如何配置Jexus啊...等等基础问题,于是昨日向宇内流云兄提议,不如搞几个配置好 ...
随机推荐
- %s 表示格式化一个对象为字符
比如: name=“good” print('%s'%name)会打印出good print('%3s'%name) 会打印出good,当%和s之间的数字,小于字符串长度时,实际打印出字符串的长度 ...
- 漏桶、令牌桶限流的Go语言实现
限流 限流又称为流量控制(流控),通常是指限制到达系统的并发请求数. 我们生活中也会经常遇到限流的场景,比如:某景区限制每日进入景区的游客数量为8万人:沙河地铁站早高峰通过站外排队逐一放行的方式限制同 ...
- JDK15真的来了,一起来看看它的新特性
目录 简介 JDK15的新特性 JEP 385 Deprecate RMI Activation for Removal JEP 371 Hidden Classes JEP 339 Edwards- ...
- vue | 基于vue的城市选择器和搜索城市对应的小区
城市选择器应该是比较常用的一个组件,用户可以去选择自己的城市,选择城市后返回,又根据自己选择的城市搜索小区. 功能展示 这是选择结果 这是选择城市 这是搜索小区 这是搜索小区接口,key为城市名字,i ...
- 手写spring
体系结构 Spring 有可能成为所有企业应用程序的一站式服务点,然而,Spring 是模块化的,允许你挑选和选择适用于你的模块,不必要把剩余部分也引入.下面的部分对在 Spring 框架中所有可用的 ...
- RabbitMQ Server安装及显示管理界面Installing on Windows
接上一篇文章,继续讲解 文件很小, 1.下载路径:http://www.rabbitmq.com/download.html 2.运行rabbitmq-server-3.6.5.exe,选择要安装的目 ...
- java.lang.NoSuchMethodError: org.springframework.util.Assert.isTrue(ZLjava/util/function/Supplier;)V
spring-data-redis 2的版本只支持spring5和spring boot2+,建议降低spring-data-redis版本 <!-- redis --> <depe ...
- 群光电子-koremes3 ORA-600 [kjxmgmb_nreq:!bat]
Bug 20250147 ORA-600 [kjxmgmb_nreq:!bat] can occur in RAC crashing the instance This note gives a ...
- springboot:This application has no explicit mapping for /erro
springboot启动没有报错,但是访问的时候返回如上图的错误.看报错内容感觉是没有这个mapping对应的接口.但是确实写了. 最终发现是因为springboot的启动类放的位置不对.启动类所在的 ...
- zookeeper watch笔记
ZK其核心原理满足CP, 实现的是最终一致性, 它只保证顺序一致性. zookeeper 基于 zxid 以及阻塞队列的方式来实现请求的顺序一致性.如果一个client连接到一个最新的 followe ...