docker 入门到实战(四)docker镜像

本篇来自于尚硅谷周阳老师 https://www.bilibili.com/vide...
上一篇: docker 入门到实战(三)docker经常使用命令

四:docker镜像

4.1 docker镜像是什么

描述:镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境开发的软件,它包含运行某个软件所需的全部内容,包括代码、运行时、库、环境变量和配置文件。html

4.1.1 UnionFS(联合文件系统)

UnionFS(联合文件系统):Union文件系统(UnionFS)是一种分层、轻量级而且高性能的文件系统,它支持对文件系统的修改做为一次提交来一层层的叠加,同时能够将不一样目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union 文件系统是 Docker 镜像的基础。镜像能够经过分层来进行继承,基于基础镜像(没有父镜像),能够制做各类具体的应用镜像。linux

特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统,联合加载会把各层文件系统叠加起来,这样最终的文件系统会包含全部底层的文件和目录web

4.1.2  Docker镜像加载原理

Docker镜像加载原理:docker

   docker的镜像实际上由一层一层的文件系统组成,这种层级的文件系统UnionFS。segmentfault

bootfs(boot file system)主要包含bootloader和kernel, bootloader主要是引导加载kernel, Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与咱们典型的Linux/Unix系统是同样的,包含boot加载器和内核。当boot加载完成以后整个内核就都在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。
下载.png
对于一个精简的OS,rootfs能够很小,只须要包括最基本的命令、工具和程序库就能够了,由于底层直接用Host的kernel,本身只须要提供 rootfs 就好了。因而可知对于不一样的linux发行版, bootfs基本是一致的, rootfs会有差异, 所以不一样的发行版能够公用bootfs。tomcat

4.1.3  分层的镜像

以咱们的pull为例,在下载的过程当中咱们能够看到docker的镜像好像是在一层一层的在下载
image.pngapp

4.1.4  为何 Docker 镜像要采用这种分层结构呢

最大的一个好处就是 - 共享资源webapp

好比:有多个镜像都从相同的 base 镜像构建而来,那么宿主机只需在磁盘上保存一份base镜像,同时内存中也只需加载一份 base 镜像,就能够为全部容器服务了。并且镜像的每一层均可以被共享。ide

4.2 docker镜像特色

Docker镜像都是只读的
当容器启动时,一个新的可写层被加载到镜像的顶部。
这一层一般被称做“容器层”,“容器层”之下的都叫“镜像层”。工具

4.3 docker commit操做

docker commit提交容器副本使之成为一个新的镜像

docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]
OPTIONS说明:
-a :提交的镜像做者;
-c :使用Dockerfile指令来建立镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

演示:

4.3.1 目前就三个镜像:

image.png

4.3.2 启动tomcat

image.png

image.png

4.3.3 添加一个主页

在容器中webapps一个建立root文件夹
image.png

宿主机建立一个index.html
image.png

image.png

把主页从宿主机拷贝到容器内 (更简单的方法目录挂载在下篇会有)
image.png

刷新页面就能够看到本身写的主页啦
吐槽一下阿里云EDS 1M太慢了 刷新好久
image.png

4.3.4 提交修改的容器变成一个新的镜像

image.png

4.3.5 根据新生成的镜像发布一个容器

image.png
image.png

下一篇

docker 入门到实战(五)docker容器数据卷

相关文章
相关标签/搜索