docker镜像原理之联合文件系统

news2024/11/26 2:42:33

镜像是什么?

镜像是一种轻量级、可执行的独立软件保,用来打包软件运行环境和基于运行环境开发的软件

他包含运行某个软件所需的所有内容,包括代码、运行时库、环境变量和配置文件

所有应用都不要服务器去部署,都可以直接打包 docker 镜像,就不用在部署一系列环境了,就可以直接跑起来

那么如何得到镜像呢?

1.从远程仓库下载(在docker官网)

2.朋友拷贝给你

3.自己制作一个镜像 DockerFile

UnionFS(联合文件系统)   就是一层一层的概念

Union文件系统(UnionFs)是一种分层、轻量级并且高性能的文件系统他支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下

Union文件系统是 Docker 镜像的基础可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像

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

docker镜像加载原理

Docker 的镜像实际上由一层一层的文件系统组成,这种层级的文件系统叫 UnionFS,就是联合文件系统 

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

注意:总结上句话的意思就是我们电脑从黑屏到开机这个过程,就是加载,就是共用的

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

docker镜像体积为啥这么小?

因为linux是由内核空间和用户空间组成的。内核空间是kernel,linux刚启动的时候会加载bootfs,之后bootfs被卸载掉。用户空间是rootfs,包含我们常用的var,bin等目录。

因为底层直接用主机的 kernel,自己只需要提供 rootfs 就可以了

由此可见对于不同的 Linux 发行版, boots 基本是一致的, rootfs 会有差別,因此不同的发行版可以公用 bootfs

所以虚拟机启动是分钟级别,容器是秒级!

分层理解 (采用分层就是共享资源)

比如下载一个redis镜像

看一下刚下载的redis的一些操作 docker image inspect redis:latest

docker镜像都是只读的,当容器启动时,一个新的可写层被加载到镜像顶部,这一层就是我们通常说的容器层,容器之下的都叫镜像层

假如tomcat有6个层,你去pull,去下载的时候就是一层一层的下载,假如有一层已经有了,他不会重复下载,直接拿着用了,当你run的时候就变成了2层,一层是镜像层(就是你下载好的),另一层就是容器层,你所有操作都是基于容器层的

创建镜像 (通过容器创建镜像)

默认镜像webapps没有东西,这就是为啥自己做镜像的原因

1.启动

2.

3.进入

4.把webapps.dist里面的东西拷贝到webapps中  因为镜像原因,官方的镜像默认   webapps下没有文件 ,我自己拷贝进入

5.测试

 

6.将我们修改过的容器通过commit提交为一个镜像,以后我们就可以使用这个修改过的镜像

就是通过容器创建镜像

docker commit -m=""提交描述信息 -a="作者" 容器id 目标镜像:版本号   

查看自己镜像

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

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

相关文章

Docker快速搭建Drupal内容管理系统并远程访问

🎬 鸽芷咕:个人主页 🔥个人专栏:《Linux深造日志》《C干货基地》 ⛺️生活的理想,就是为了理想的生活! 文章目录 前言1. Docker安装Drupal2. 本地局域网访问3 . Linux 安装cpolar4. 配置Drupal公网访问地址5. 公网远程访问Drupal…

C语言实现将一个数组逆序输出,使用指针数组操作

完整代码&#xff1a; // 将一个数组逆序输出&#xff0c;使用指针数组操作 #include<stdio.h>//将一个数组逆序输出 void reverse(int *arr,int len){//头指针int *startarr;//尾指针int *endarrlen-1;//通过交换数组中前后所有的数&#xff0c;来使数组逆序while (sta…

多无人机在线路径规划的新算法

南京航空航天大学自动化学院使用NOKOV度量动作捕捉系统获取多架无人机的精确位置信息&#xff0c;实现多架无人机协同实时路径规划。 研究背景 近年来&#xff0c;无人机越来越多地应用于执行战场侦察、目标识别、跟踪打击等任务。 由多架无人机协同执行任务&#xff0c;通过…

彻底删除Ubuntu双系统(联想小新2022)

彻底卸载Ubuntu双系统 以里联想小新pro16 i9-12900h为例子 把开机启动项设为默认Windows启动 以联想电脑为例子&#xff0c;关机后一直点击Fn F2进入Bios把windows启动项移到最上面&#xff0c;这样可以开机默认启动windows了删除ubuntu系统分区 使用磁盘管理软件 DiskGeniu…

《C++ Primer》第8章 IO库

参考资料&#xff1a; 《C Primer》第5版《C Primer 习题集》第5版 8.1 IO类&#xff08;P278&#xff09; 我们目前使用过的 IO 对象&#xff08;cin 、cout&#xff09;都是关联到控制台窗口、操纵 char 数据的。有时&#xff0c;我们需要对命名文件或者 string IO 操作。…

iOS如何通过在线状态来监听其他设备登录的状态

前提条件 1、完成 3.9.1 或以上版本 SDK 初始化 2、了解环信即时通讯 IM API 的 使用限制。 3、已联系商务开通在线状态订阅功能 实现方法 你可以通过调用 subscribe 方法订阅自己的在线状态&#xff0c;从而可以监听到其他设备在登录和离线时的回调&#xff0c;示例代码如下…

【源码】自制链接表管理器

hi&#xff0c;大家好呀&#xff01; 前几天更新了个视频&#xff0c;教大家做了一个链接表的管理器&#xff0c;今天把文字内容给到大家&#xff0c;至于什么原因需要自己做一个链接表管理器&#xff0c;我在视频中有讲到&#xff0c;因为系统自带的链接表管理器没有筛选功能…

回归预测 | Matlab实现PCA-PLS主成分降维结合偏最小二乘回归预测

回归预测 | Matlab实现PCA-PLS主成分降维结合偏最小二乘回归预测 目录 回归预测 | Matlab实现PCA-PLS主成分降维结合偏最小二乘回归预测效果一览基本介绍程序设计参考资料 效果一览 基本介绍 Matlab实现PCA-PLS主成分降维结合偏小二乘回归预测&#xff08;完整源码和数据) 1.输…

直面LED Driver测试挑战,助力显示屏行业变中求变!

杭州亚运会开幕式惊艳世界&#xff0c;引发社会各界一致赞誉&#xff01;在大气浪漫的舞台效果中&#xff0c;LED屏、裸眼3D屏凭借“硬核科技”出圈&#xff0c;为大家带来科技、活力、诗意的“中国式浪漫”观赏体验。而这美轮美奂的LED呈现效果背后&#xff0c;主要依靠的是LE…

Echarts仪表盘自定义数值样式

需求描述 原图样式 需求样式 解决方案 {name: 数值,type: gauge,startAngle: 180,endAngle: 0,radius: 30%,center: [50%, 55%], // 默认全局居中 min: 0,max: 4,zlevel: 2,splitNumber: 0,axisLine: { // 坐标轴线 lineStyle: {color: [[1, ]], // 属性lineStyle控制线…

TSINGSEE视频智能分析系统AI算法针对遛狗不拴绳行为的监管方案

一、背景与需求 近期&#xff0c;一则恶犬咬伤女童的新闻上了热搜&#xff0c;因为狗主人没有给狗拴绳&#xff0c;导致小区内一女童被大型犬撕咬&#xff0c;女童全身多处咬伤&#xff0c;已入院治疗。该新闻曝出后立刻引发社会关注。遛狗不拴绳行为也再一次引发热议。因为狗主…

spring基础,编写第一个程序

spring基础 前言SpringSpring概述Spring的8大模块Spring特点学习spring6软件版本Spring的入门程序第一个Spring程序 小结 前言 控制反转&#xff0c;是面向对象编程中的一种设计思想&#xff0c;可以用来降低代码之间的耦合度&#xff0c;符合依赖倒置原则。 控制反转的核心是…

06、SpringBoot+微信支付 -->商户定时查订单状态、用户取消订单(关闭订单API)、查询订单API--到微信支付平台查询订单

目录 Native 下单、取消订单订单功能完善需求1&#xff1a;商户定时查单前端代码&#xff1a;后端代码&#xff1a;测试&#xff1a;swagger 测试&#xff1a; 需求2&#xff1a;用户取消订单&#xff08;关闭订单API&#xff09;需求&#xff1a;代码&#xff1a;前端&#xf…

Linux安装Python3.10与部署flask项目实战详细记录

java开发新手入门Python,创建flask后端服务对外提供访问.记录一下在阿里云服务器部署flask项目的操作过程,简单介绍一下使用的阿里云服务器系统配置:ubantu16.04,其他内核版本操作部分命令会有所区别,下面开始详细操作过程! 1.pycharm创建flask项目并打包 2.Python3.…

grafana 密码忘记怎么重置

1.重置密码的命令&#xff1a; grafana-cli admin reset-admin-password 新的密码

【JavaEESpring】Spring, Spring Boot 和Spring MVC的关系以及区别

Spring, Spring Boot 和Spring MVC的关系以及区别 Spring&#xff1a;简单来说&#xff0c;Spring 是一个开发应用框架&#xff0c;什么样的框架呢&#xff1f;轻量级、一站式、模块化&#xff0c;其目的是用于简化企业级应用程序开发 Spring的主要功能: 管理对象, 以及对象之…

收银系统有哪些分类 收银软件有哪些类型

收银系统有以下这几种分类&#xff0c;你都清楚么&#xff1a; 一、按是否能数据共享可分为&#xff1a;单机版收银系统、网络版收银系统 这里需要注意&#xff0c;很多地方说单机也能收银&#xff0c;其实单机和网络版只是数据存储地方不同&#xff0c;单机版需要在线收银还是…

2023第六届泰迪杯数据分析,第五届泰迪杯数据分析技能赛B题源码图片分享

需要B题源码以及第六届带队”指导“请私信本人&#xff0c;团队包含技能赛双一等&#xff0c;数学建模省一&#xff0c;泰迪杯挖掘国一&#xff0c;研究生队友。 去年一等作品可视化图如下&#xff0c;私信获取源码

javaSE学习笔记(五)集合框架-Collection,List,Set,Map,HashMap,Hashtable,ConcurrentHashMap

目录 四、集合框架 1.集合概述 集合的作用 集合和数组的区别 集合继承体系 数组和链表 数组集合 链表集合 2.Collection 方法 集合遍历 并发修改异常 3.List List集合的特有功能&#xff08;核心是索引&#xff09; 集合遍历 并发修改异常产生解决方案ListIterato…

在虚拟机中新安装的Linux无法联网解决办法

1、我们在虚拟机中新安装了linux&#xff0c;默认是无法连接网络的&#xff0c;这个时候&#xff0c;需要配置自动获取ip的网设置。 2、我们在VMware Workstatio需要配置net网络&#xff0c;如下图 3、进入linux系统&#xff0c;找到 /etc/sysconfig/network-scripts/ [rootn…