镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的所有内容,其中包括代码、运行时、库、环境变量和配置文件。通过将所有的应用和环境直接打包为docker镜像,就可以直接运行。我们需要知道的是:Docker镜像都是只读的,在容器启动的时候,一个新的可写层被加载到镜像到的顶部,这一层就被称为容器层,处于容器层之下的称之为镜像层。当启动容器的时候,会在镜像的基础上再添加一个当前容器的专用层,这层是读写的。在删除容器的时候,这个容器的专属的这个读写层就会被删除,所以默认容器无法实现数据的持久存储。
在介绍Docker镜像的原理之前,先来介绍一下UnionFS(联合文件系统),它是一种分层、轻量级且高性能的文件系统,支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。Union 文件系统是 Docker 镜像的基础。镜像可以通过分层来进行继承,基于基础镜像(没有父镜像)可以制作各种具体的应用镜像。对于UnionFS来说,它可以一次同时加载多个文件系统,但是从外面来看只能看到一个文件系统。通过层层叠加,联合文件系统会把各层文件系统叠加起来,这样最终形成的文件系统就会包含所有底层到的文件和目录。这种方式就像千层饼一样。
Docker的镜像实际上由一层一层的文件系统组成。如下图:
观察上图:
需要注意的是:在启动容器的时候,这两层都是以只读的方式来挂载的。
通过前面的介绍可以知道:镜像的设计采用了层级管理的方式,其底层的是bootfs,最上面的是rootfs,这种方式最大的好处就是共享资源,并且很大程度提高了Docker镜像的分发与存储。因为当多个镜像都是从相同的base镜像构建出来的,那么对于宿主机而言,只需要在磁盘上保存一份base镜像即可,同时在内存中也只需要加载一份base镜像,从而为所有的容器服务。如下图,这种方式更容易理解。
来看一下我们pull一个镜像的过程:
从上面的下载过程就可以看到Docker镜像的分层结构,因为下载的过程是逐步下载的。通过docker images可以看到下载之后的文件是比较小的。这是因为对于一个精简的OS来说,rootfs可以很小,里面只需要包括最基本的命令、工具和程序库,而底层直接用Host的kernel,自己只需要提供 rootfs 即可。由此可见,对于不同的linux发行版,?bootfs基本是一致的,,而rootfs会有差别,,因此不同的发行版可以共用bootfs。所以,我们拉取的镜像,大小比以前都小。
(1)命令
格式:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
参数说明:
-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。
示例:
docker commit -m=“提交的描述信息” -a=“作者” 容器ID 要创建的目标镜像名:[标签名]
(2)实例
以tomcat为例:
a.从hub下载tomcat镜像——docker pull tomcat
b.运行tomcat容器——docker run -d -p 8084:8080 tomcat
c.查看当前运行的容器——docker ps
d.以交互方式运行Tomcat——docker exec -it eff0e88737be /bin/bash
e.删除webapp——rm -rf webapps/docs?
f.以当前的tomcat运行实例为模板commit一个没有doc的tomcat新镜像。
?
寻找环形链表的入口点 环形链表的入口点 1.首先怎么判断链表是否有环 1为什么slo...
许多用户遇到的一个常见问题是Windows 10更新卡住了。 此问题的发生可能非常令人...
我们在建表的时候有时候会加default默认值,有时不加,而default默认值又有''和N...
大多数好的设计者象躲避瘟疫一样来避免使用实现继承(extends 关系)。实际上80%的...
例题所使用的表如下 Create Table student ( Sno char ( 12 ) Primary Key , Sna...
本文实例讲述了Laravel 框架基于自带的用户系统实现登录注册及错误处理功能。分...
【导语】: Handtrack.js 是一个可以直接在浏览器中实现实时手部动作跟踪和检测...
网上处理方法一箩筐,下面说说我用过的两种有效地解决办法. 1.为程序编写一个字...
一、图状结构数据广泛存在 字节跳动的所有产品的大部分业务数据,几乎都可以归入...
复制代码 代码如下: %@ page contentType="text/html;charset=gb2312 " % 改为:...