Docker 镜像

news2024/11/26 3:51:19

1. 什么是镜像?

镜像

是一种轻量级、可执行的独立软件包,它包含运行某个软件所需的所有内容,我们把应用程序和配置依赖打包好形成一个可交付的运行环境(包括代码、运行时需要的库、环境变量和配置文件等),这个打包好的运行环境就是image镜像文件。

只有通过这个镜像文件才能生成Docker容器实例(类似Java中new出来一个对象)。

1.1 分层的镜像

以我们的pull为例,在下载的过程中我们可以看到docker的镜像好像是在一层一层的在下载

1.2 UniFos

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

 

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

1.3 Docker镜像加载原理

Docker镜像加载原理:

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

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

 

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

 平时我们安装进虚拟机的CentOS都是好几个G,为什么docker这里才200M??

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

bootfs作用在于,虚拟化linux内核,rootfs构建每个系统的目录结构。

1.4 为什么Docker镜像要采用这种分层结构

镜像分层最大的一个好处就是共享资源,方便复制迁移,就是为了复用。

 

比如说有多个镜像都从相同的 base 镜像构建而来,那么 Docker Host 只需在磁盘上保存一份 base 镜像;

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

2. 重点理解

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

所有对容器的改动 - 无论添加、删除、还是修改文件都只会发生在容器层中。只有容器层是可写的,容器层下面的所有镜像层都是只读的。

3. Docker镜像commit操作案例

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

docker commit -m="提交描述信息" -a="作者" 容器id要创建

 

提交最新的镜像

 启动我们自己最新的镜像和原来的做对比

 

1。官网是默认下载的Ubuntu没有vim命令

2。我们自己commit构建的镜像,新增加了vim功能,可以成功使用。

4. 总结

Docker中的镜像分层,支持通过扩展现有镜像,创建新的镜像。类似Java继承于一个Base基础类,自己再按需扩展。

新镜像是从 base 镜像一层一层叠加生成的。每安装一个软件,就在现有镜像的基础上增加一层

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/876107.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

如何使用Redis实现内容推送功能

导读 在日常使用中,我们经常能看见内容推送功能。 常见的场景有,比如你在bilibili关注了某个up主,当up主发布视频后,就会推送到你的收件箱或者是动态中,让粉丝能够及时得知所关注的人发布了内容。 又比如朋友圈&…

离了大谱,这所院校太卷了!524人进复试,刷247人!

一、学校及专业介绍 桂林电子科技大学(Guilin University Of Electronic Technology),简称“桂电”、广西一流学科建设高校、是广西唯一拥有国防特色重点专业的高校,是总装备部通信装备预研项目定向发布的30所高校和北斗ICD授权的…

力扣 322. 零钱兑换

题目来源:https://leetcode.cn/problems/coin-change/description/ C题解(来源代码随想录):题目中说每种硬币的数量是无限的,可以看出是典型的完全背包问题。动规五部曲分析如下: 确定dp数组以及下标的含义…

从初学者到专家:Java方法的完整指南

目录 一.方法的概念及使用 1.1什么是方法 1.2方法的定义 1.3方法的调用 1.4实参和形参的关系 1.5没有返回值的方法 1.6方法的意义 二.方法重载 2.1方法重载的实现 2.2方法重载的意义 2.3方法签名 一.方法的概念及使用 1.1什么是方法 方法就是一个代码片段. 类似于 …

21款美规奔驰GLS450更换中规高配主机,汉化操作更简单

很多平行进口的奔驰GLS都有这么一个问题,原车的地图在国内定位不了,语音交互功能也识别不了中文,原厂记录仪也减少了,使用起来也是很不方便的。 可以实现以下功能: ①中国地图 ②语音小助手(你好&#xf…

内网ip与外网ip

一、关于IP地址 我们平时直接接触最多的是内网IP。而且还可以自己手动修改ip地址。而外网ip,我们很少直接接触,都是间接接触、因为外网ip一般都是运营商管理,而且是全球唯一的,一般我们自己是无法修改的。 内网IP和外网IP是指在…

线程间三种常见的通信手段

线程间通信是指多个线程之间通过某种机制进行协调和交互,例如:线程等待和通知机制就是线程通讯的主要手段之一。 在 Java 中有以下三种实现线程等待的手段 : Object 类提供的 wait(),notify() 和 notifyAll() 方法;C…

Python实现SSA智能麻雀搜索算法优化BP神经网络分类模型(BP神经网络分类算法)项目实战

说明:这是一个机器学习实战项目(附带数据代码文档视频讲解),如需数据代码文档视频讲解可以直接到文章最后获取。 1.项目背景 麻雀搜索算法(Sparrow Search Algorithm, SSA)是一种新型的群智能优化算法,在2020年提出&a…

新能源电动汽车充电桩控制主板结构组成

你是否好奇过,充电桩主板到底是由哪些部分组成的?又分别是做什么的?今天我们就来一探究竟。 充电桩主板是充电桩的核心部件,它由中央处理器、内存、辅助存储器、输入/输出接口等组成。 中央处理器是充电桩主板的核心,它负责将充电桩的读写指…

vue里搜索框实现防抖功能

进来调用一个闭包函数debounce(),赋值给一个变量debounceFunc,(包闭的功能就是说里面的变量timer和参数一直驻留在函数里面) input事件调用一个函数debounceFunc(),并且传一个回调searchs函数&a…

MATLAB 2023a的机器学习、深度学习实践应用

MATLAB 2023版的深度学习工具箱,提供了完整的工具链,使您能够在一个集成的环境中进行深度学习的建模、训练和部署。与Python相比,MATLAB的语法简洁、易于上手,无需繁琐的配置和安装,让您能够更快地实现深度学习的任务。…

深入理解 go协程 调度机制

Thread VS Groutine 这里主要介绍一下Go的并发协程相比于传统的线程 的不同点: 创建时默认的stack大小 JDK5 以后Java thread stack默认大小为1MC 的thread stack 默认大小为8MGrountine 的 Stack初始化大小为2K 所以Grountine 大批量创建的时候速度会更快 和 …

plt取消坐标轴刻度、自定义取消绘图边框(或坐标轴)、白边处理、自定义颜色图谱、设置坐标轴刻度朝向

目录 1、取消坐标轴刻度 2、自定义取消绘图边框(或坐标轴) 3、去掉图片周边白边 4、自定义颜色图谱 5、设置坐标轴刻度朝向 import matplotlib.pyplot as plt 1、取消坐标轴刻度 ax plt.subplot() ax.set_xticks([]) ax.set_yticks([]) 2、自定…

redis分布式集群-redis+keepalived+ haproxy

redis分布式集群架构(RedisKeepalivedHaproxy)至少需要3台服务器、6个节点,一台服务器2个节点。 redis分布式集群架构中的每台服务器都使用六个端口来实现多路复用,最终实现主从热备、负载均衡、秒级切换的目标。 redis分布式集…

基于SpringBoot的旅游网站的设计与实现【附ppt|开题|万字文档(LW)和搭建文档

主要功能 前台界面: ①首页、旅游线路推荐、旅游资讯、线路搜索、查看更多等 ②旅游线路、度假旅游、探险考察、文化旅游、短程旅游、观光旅游、远程旅游、最新路线等 ③添加购物车、立即购买、评论、点我收藏等 ④个人中心、我的订单、我的地址、我的收藏、客服等…

vue实现a组件中数据变化b组件实时更新(ab组件无关联)

需求:A组件新增、编辑或者删除数据时,B组件实时更新数据 // src/utils/bus.js// bus.$emit(bridge-updated) 是在事件总线实例 bus 上触发了一个自定义事件 // data-updated,相当于发布了一个事件。// bus.$on(bridge-update…

考研算法44天:玛雅人的密码

题目前置知识 1.为啥BFS比DFS更加适合找最短路径? BFS 的使用场景:层序遍历、最短路径问题 - 知乎 (zhihu.com) 题目原题 解题思路 这道题和原先写的那些题目不同的是,这次BFS所搜索的树里面存放的是一个字符串,也就是说没有路…

SQL server中substring 的用法

一:substring函数是SQL中截取字段数据中的其中一部分 --列:提取abdcsef中的abc数据,使用substring实现select substring(abdcsef,1,3) --‘1’表示截取的起始位置是从第一个字符开始,‘3’表示截取后得到的字符串长度为3个字符 二&#xff1…

day7 ADC模数转换

ADC简介 作用:采集传感器的数据,测量输入电压,检查电池电量剩余,检测温湿度等。 ADC性能指标 量程:能测量的电压范围 分辨率:ADC的分辨率通常以二进制数的位数表示,位数越多,分辨…

腾讯面试题:使用Redis分布式锁可能会出现哪些问题?

嗨大家好,我是你们的小米!今天要和大家聊一个有趣的话题,那就是“腾讯面试题:使用Redis做分布式锁可能会出现哪些问题?”没错,就是腾讯大佬们在面试时经常会问到的一个问题,我们来一起深入了解一…