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啊...等等基础问题,于是昨日向宇内流云兄提议,不如搞几个配置好 ...
随机推荐
- Selenium-WebDriver安装
一.chrome浏览器: 根据chrome浏览器版本,下载对应的驱动 chromedriver版本 支持的Chrome版本 v2.37 v64-66 v2.36 v63-65 v2.35 v62-64 ...
- Salesforce LWC学习(二十五) Jest Test
本篇参看: https://trailhead.salesforce.com/content/learn/modules/test-lightning-web-components https://j ...
- linux中root用户查看所有用户的历史操作命令
转载https://blog.csdn.net/qq_27786919/article/details/91353351 1.创建用户审计文件存放目录和审计日志文件 :mkdir -p /var/lo ...
- python中实现参数化的原理
k就是 <参数名>
- 什么是Lambda架构
一.Lambda架构需求 Lambda架构背后的需求是由于MR架构的延迟问题.MR虽然实现了分布式.可扩展数据处理系统的目的,但是在处理数据时延迟比较严重.实际上如果内存和CPU足够强大,MR也可以实 ...
- 深度理解volatile关键字
最轻量的同步机制 获取被volatile修饰的变量的时候,每次都要从主内存中获取 设置被volatile修饰的变量的时候,每次都要刷回主内存当中 当其他线程调用的时候,会将自己线程当中保存的变量值置为 ...
- maven问题汇总
Failed to read artifact descriptor for xxx:jar 在MyEclipse中执行Maven的install命令时,报“Failed to read artifa ...
- Anaconda简介及特点
摘要 Python是一种面向对象的解释型计算机程序设计语言,其使用,具有跨平台的特点,可以在Linux.macOS以及Windows系统中搭建环境并使用,其编写的代码在不同平台上运行时,几乎不需要做较 ...
- pwnable.kr-coin1-witeup
是一个小游戏,会给100堆小硬币,在每堆硬币中找到假币(重量为9,其他重量为10),其中每堆硬币都设置了金币数和固定的尝试次数. 思路是:在每堆硬币中,在有限的尝试次数中对硬币通过二分法计算硬币重量不 ...
- Python实现的数据结构与算法之基本搜索详解
一.顺序搜索 顺序搜索 是最简单直观的搜索方法:从列表开头到末尾,逐个比较待搜索项与列表中的项,直到找到目标项(搜索成功)或者 超出搜索范围 (搜索失败). 根据列表中的项是否按顺序排列,可以将列表分 ...