(七)Docker 镜像原理

一、镜像是一种轻量级、可执行的独立软件包,用来打包软件运行环境和基于运行环境的开发软件,它包含运行某个软件所需的所有内容,

包括代码、运行时、库、环境变量和配置文件。

二、UnionFS(联合文件系统)

  Union文件系统(UnionFS) 是一种分层、轻量级并且高性能的文件系统,他支持对文件系统的修改作为一次提交来层层的叠加,

同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem)。Union文件系统是Docker镜像

的基础。镜像可以通过分层来进行集成,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。

  特性:一次同时加载多个文件系统,但从外面看起来,只能看到一个文件系统你那个,联合加载会把各层文件系统叠加起来,这样最终的

文件系统会包含所有底层文件和目录。

三、Docker 镜像加载原理

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

bootfs(boot file system) 主要包含bootloader和kernel,bootloader 主要是引导加载kernel,Linux刚启动时会加载bootfs文件系统,在Docker镜像的最底层是bootfs。这一层与我们典型的Linux/Unix系统是一样的,包含boot加载器和内核。当boot加载完成之后整个内核就存在内存中了,此时内存的使用权已由bootfs转交给内核,此时系统也会卸载bootfs。

  roorfs (root file system),在bootfs之上。包含的就是典型Linux系统中的 /dev ,/proc,/bin ,/etx 等标准的目录和文件。rootfs就是各种不同的操作系统发行版。比如Ubuntu,Centos等等。

  对于一个精简的OS,rootfs可以很小,只需要包括最基本的命令、工具和程序库就可以了,因为底层直接用Host(宿主机)的kernel,自己只需要提供rootfs就行了,由此可见对于不同的Linux发行版,bootfs基本是一致的,rootfs会有差别,因此不同的发行版可以公用bootfs。

四、Docker 镜像联合文件系统分层,Tomcat镜像示例

  

   采用这种分层结构最大的一个好处就是共享资源,比如有多个镜像都从相同的base镜像构建而来,那么宿主机只需要在磁盘上保存一份base镜像,

  同时内存中也只需要加载一份base镜像,就可以为所有容器服务了。而且镜像的每一层都可以被共享。

     docker 镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像的顶部。这一层通常被称作 “容器层” ,“容器层” 之下的都叫镜像层。

原文地址:https://www.cnblogs.com/asxf/p/11102949.html

时间: 2024-10-08 20:55:16

(七)Docker 镜像原理的相关文章

深入分析 Docker 镜像原理

摘要:近日, DaoCloud 软件工程师孙宏亮在 CSDN Container 微信群为大家带来了 Docker 镜像原理的深度分享,本次分享的重点是 Docker 镜像,分享的内容主要包含两个部分:1)Docker 镜像的基本知识:2)Dockerfile,Docker 镜像与 Docker 容器的关系. 嘉宾介绍:孙宏亮,硕士,浙江大学毕业,现为 DaoCloud 软件工程师,出版有<Docker 源码分析>,目前主要负责企业级容器云平台的研发工作.数年来一直从事云计算.PaaS 领域的

深入分析Docker镜像原理(下)

第二部分 Dockerfile.Docker镜像和Docker容器的关系 Dockerfile 是软件的原材料,Docker 镜像是软件的交付品,而 Docker 容器则可以认为是软件的运行态.从应用软件的角度来看,Dockerfile.Docker 镜像与 Docker 容器分别代表软件的三个不同阶段,Dockerfile 面向开发,Docker 镜像成为交付标准,Docker 容器则涉及部署与运维,三者缺一不可,合力充当 Docker 体系的基石. 简单来讲,Dockerfile构建出Doc

Docker镜像的实现原理

Docker 镜像是怎么实现增量的修改和维护的? 每个镜像都由很多层次构成,Docker 使用 Union FS 将这些不同的层结合到一个镜像中去. 通常 Union FS 有两个用途, 一方面可以实现不借助 LVM.RAID 将多个 disk 挂到同一个目录下,另一个更常用的就是将一个只读的分支和一个可写的分支联合在一起,Live CD 正是基于此方法可以允许在镜像不变的基础上允许用户在其上进行一些写操作. Docker 在 AUFS 上构建的容器也是利用了类似的原理. 原文地址:https:

玩转Docker镜像

前言 Docker 是Docker.Inc公司开源的一个基于轻量级虚拟化技术的容器引擎项目,整个项目基于Go语言开发,并遵从Apache 2.0协议.通过分层镜像标准化和内核虚拟化技术,Docker使得应用开发者和运维工程师可以以统一的方式跨平台发布应用,并且以几乎没有额外开销的情 况下提供资源隔离的应用运行环境.由于众多新颖的特性以及项目本身的开放性,Docker在不到两年的时间里迅速获得诸多IT厂商的参与,其中更是包括 Google.Microsoft.VMware等业界行业领导者.同时,D

玩转Docker镜像——学习为兴趣而生

[前言] Docker是Docker.Inc公司开源的一个基于轻量级虚拟化技术的容器引擎项目,整个项目基于Go语言开发,并遵从Apache 2.0协议.通过分层镜像标准化和内核虚拟化技术,Docker使得应用开发者和运维工程师可以以统一的方式跨平台发布应用,并且以几乎没有额外开销的情况下提供资源隔离的应用运行环境.由于众多新颖的特性以及项目本身的开放性,Docker在不到两年的时间里迅速获得诸多IT厂商的参与,其中更是包括Google.Microsoft.VMware等业界行业领导者.同时,Do

Docker镜像文件(images)的存储结构

原文作者: Troy Howard(http://blog.thoward37.me/)原文地址:http://blog.thoward37.me/articles/where-are-docker-images-stored/ 翻译:刘斌(http://liubin.org/)本文地址:http://liubin.org/2014/03/10/about-docker-images-storage/ ? 关于本文的任何指正,请在新浪微博联系我或者在Twitter上. 如果你是刚开始接触 Doc

docker镜像、容器

第一部分:Docker镜像的基本知识 1.1 什么是Docker镜像 从整体的角度来讲,一个完整的Docker镜像可以支撑一个Docker容器的运行,在 Docker容器运行过程中主要提供文件系统视角.例如一个ubuntu:14.04的镜像,提供了一个基本的ubuntu:14.04的发行版,当然此 镜像是不包含操作系统Linux内核的. 说到此,可能就需要注意一下,linux内核和ubuntu:14.04Docker镜像的区别了.传统虚拟机安装ubuntu:14.04会包含两部分,第一,某一个L

将 ASP.NET 5 应用作为 docker 镜像发布 (Linux版)

将 ASP.NET 5 应用作为 docker 镜像发布 (Linux版)? 提示 本文更新时间:2015年12月20日. 注解 如果你需要将 docker 镜像运行在Windows平台,或者使用在 Visual Studio 2015 上,请看稍后的一片博文(目前未发布) 将 ASP.NET 5 应用作为 docker 镜像发布 (Windows版) 创建 ASP.NET 5 项目? 首先,你需要一个已经完成的 ASP.NET 5 应用,如果还没有的话,可以参考 在 Mac OS 上创建的 A

创建超小的Golang docker 镜像

原文: http://colobu.com/2015/10/12/create-minimal-golang-docker-images/ 本文对于创建超小的镜像非常有用 Docker是PaaS供应商dotCloud开源的一个基于LXC 的高级容器引擎,源代码托管在 GitHub 上, 基于Go语言开发并遵从Apache 2.0协议开源.正如DockerPool在免费Docker电子书Docker -- 从入门到实践中这样提到的: 作为一种新兴的虚拟化方式,Docker 跟传统的虚拟化方式相比具