Docker镜像讲解

此篇为Docker笔记,文章可能存在疏忽,建议直接观看原视频。
视频地址:https://www.bilibili.com/video/BV1og4y1q7M4?spm_id_from=333.999.0.0
参考:https://blog.csdn.net/11b202/article/details/21389067

Docker镜像讲解

镜像是什么

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

所有应用,直接打包成Docker镜像,就可以直接跑起来。

Docker镜像加载原理

  • UnionFS (联合文件系统)

    UnionFS是一种分层、轻量级并且高性能的文件系统,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下。UnionFSDocker镜像的基础,镜像可以通过分层来进行继承,基于基础镜像,可以制作各种具体的应用镜像。(不同 Docker 容器就可以共享一些基础的文件系统层,同时再加上自己独有的改动层,大大提高了存储的效率。)

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

  • 分层原理 (来自 https://blog.csdn.net/11b202/article/details/21389067)

    Docker的文件系统分为两层:bootfsrootfs;

    在这里插入图片描述

    bootfs主要包含boostloaderkernelbootloader主要引导加载kernelLinux刚启动时会加载bootfs,在内核启动之后,bootfs实际上会unmount掉。用户不能对这层做任何修改。

    对于Linux上不同版本的问题,docker可以同时运行多个rootfs

    在这里插入图片描述

    Docker的文件系统是分层的,它的rootfsmount之后会转为只读模式。 Docker在它上面添加一个新的文件系统,来达成它的只读。事实上,从下图中,我们能看到多个只读的文件系统,Docker中把他们称为 层。image是只读的,container部分则是可写的。如果用户想要修改底层只读层上的文件,这个文件就会被先拷贝到上层,修改后驻留在上层,并屏蔽原有的下层文件。

在这里插入图片描述

在这里插入图片描述

commit镜像

# docker commit 提交容器成为一个新的副本
# docker commit -m="描述信息" -a="作者" 容器id 目标镜像名:[TAG] 
$ docker commit -a="zhucz" -m="copy webapps.dist to webapps" 739702468c62 tomcat02:1.0
sha256:9a26e1374d18728160cd009f744002aa39788bcb141f2bea4b935f270cd0fbbb
$ docker images
REPOSITORY   TAG       IMAGE ID       CREATED          SIZE
tomcat02     1.0       9a26e1374d18   12 seconds ago   684MB
tomcat       9.0       86783bb5af6c   4 days ago       680MB

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

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

相关文章

Making the Grade POJ - 3666(离散化+dp)

题意: 给你n个山的高度,单独的一个数可以任意加减,让经过对每座山峰任意加减高度后变成递增或递减的序列时,求对每个数的相加或相减的数目的最小和。 题目: A straight dirt road connects two fields on FJ’s far…

Kubernetes的安全性怎么解?从4个方面为你列出方案清单

导语Kubernetes中的安全性是一个多维问题,必须从各个不同的角度来解决才算完善,这篇文章将从4个方面为读者列出安全清单。正文Kubernetes,经过更快的采用和社区的更多贡献,正日益攀登到新的高度。不过,安全性仍然是Kub…

DDIA笔记—第六章 数据分区

第六章 数据分区 数据分区与数据复制 分区通常与复制结合使用,即每个分区在多个节点都存在副本,这就意味着某条记录属于特定的分区,而同样的内容会保存在不同的节点上以提高系统的容错性。 每个节点同时充当某些分区的主副本和其他分区的从…

Piggy-Bank POJ - 1384(完全背包+背包放满)

题意: 给出一个存钱罐的重量和没存钱之前存钱罐的重量,然后给出几种硬币的重量和币值,计算存钱罐里至少有多少钱。 题目: Before ACM can do anything, a budget must be prepared and the necessary financial support obtain…

Magicodes.IE 2.2发布

Magicodes.IE 2.2发布导入导出通用库,支持DTO导入导出以及动态导出,支持Excel、Word、PDF、CSV和HTML。已加入ncc开源组织.Magicodes.IE2.0发布Magicodes.IE2.1发布如何做好一个开源项目(一)GitHub:https://github.com/dotnetcore/Magicodes.…

C++ 基类,子对象,派生类构造函数调用顺序

#include <iostream> using namespace std;class A {public:A( ) {cout << "A Constructor………" << endl;}~A( ) {cout << "A Destructor………" << endl;} };class B: public A {public:B( ) {cout << "B …

牛客网 第十七届中国计量大学程序设计竞赛(同步赛)(重现赛)B题 Broken Pad 暴力+思维

题意&#xff1a; 给你两个01串&#xff0c;经过两种操作&#xff0c;1.直接让第一串经过操作变成目标串&#xff1b;2.可以点击空白处&#xff0c;即0的地方&#xff0c;使得操作串全部清空为0串&#xff0c;再变为目标串&#xff1b;最终比较两种方式&#xff0c;哪种需更少…

C++ 虚析构函数

代码如下: #include <iostream> using namespace std;class Base {public:Base() {cout << "Base" << endl;}~Base() {cout << "Base destructor" << endl;} };class Derived : public Base {public:Derived() {cout <&…

I - Interesting Permutation Gym - 102394I(排列组合)

题意&#xff1a; 纯数题 1≤i≤n, fimax{a1,a2,…,ai}; 1≤i≤n, gimin{a1,a2,…,ai}; 1≤i≤n, hifi−gi. 数列a是一个排列&#xff0c;问多少种排列方式满足h数列。 题目&#xff1a; DreamGrid has an interesting permutation of 1,2,…,n denoted by a1,a2,…,an. He …

Magicodes.SwaggerUI 已支持.NET Core 3.1

Magicodes.SwaggerUI 通过配置文件简单配置即可快速完成SwaggerUI的配置&#xff0c;包括&#xff1a;SwaggerUI的文档信息API分组API隐藏API JSON生成&#xff08;枚举、API架构Id&#xff09;验证自定义页面支持.NET Core 2.2和3.1。版本日志和使用教程见下文。注意&#xff…

PTA天梯赛L1-006 连续因子 (20分)

题目&#xff1a; 一个正整数 N 的因子中可能存在若干连续的数字。例如 630 可以分解为 3567&#xff0c;其中 5、6、7 就是 3 个连续的数字。给定任一正整数 N&#xff0c;要求编写程序求出最长连续因子的个数&#xff0c;并输出最小的连续因子序列。 输入格式&#xff1a; …

C++ 多态实现的三个条件

多态实现的三个条件&#xff1a; 1.必须是公有继承 2.必须是通过基类的指针或引用 指向派生类对象 访问派生类方法 3.基类的方法必须是虚函数&#xff0c;且完成了虚函数的重写

[推荐]大量 Blazor 学习资源(二)

继上一篇《[推荐]大量 Blazor 学习资源&#xff08;一&#xff09;》之后&#xff0c;社区反应不错&#xff0c;但因个人原因导致这篇文章姗姗来迟&#xff0c;不过最终还是来了&#xff01;这篇文章主要收集一些常用组件、书籍和电子书。资料来源&#xff1a;https://github.c…

Golang实现最大堆/最小堆

Golang实现最大堆/最小堆 参考&#xff1a; https://yangjiahao106.github.io/2019/01/15/golang-%E6%9C%80%E5%A4%A7%E5%A0%86%E5%92%8C%E6%9C%80%E5%B0%8F%E5%A0%86/ https://studygolang.com/articles/24288 方法一 此方法就是比较传统、常见的方法&#xff0c;下面来构建一…

团体程序设计天梯赛-练习集L1-011 A-B (20分)getline输入

little tips&#xff1a;关于天梯赛不能用gets 题目&#xff1a; 本题要求你计算A−B。不过麻烦的是&#xff0c;A和B都是字符串 —— 即从字符串A中把字符串B所包含的字符全删掉&#xff0c;剩下的字符组成的就是字符串A−B。 输入格式&#xff1a; 输入在2行中先后给出字…

Sql Server之旅——第八站 看公司这些DBA们设计的这些复合索引

这一篇再说下索引的最后一个主题&#xff0c;索引覆盖&#xff0c;当然学习比较好的捷径是看看那些大师们设计的索引&#xff0c;看从中能提取些什么营养的东西&#xff0c;下面我们看看数据库中一个核心的Orders表。一&#xff1a;查看表的架构1. 先查看这个表的大概架构信息-…

C++ setprecision()用法

io 流控制头文件, 主要是一些操纵用法如setw(int n),setprecision(int n) #include < iomanip > setw(n)用法&#xff1a; 通俗地讲就是预设宽度 #include<iostream> #include <iomanip> using namespace std;int main() {cout << setw(5) <<…

备战ccpc分站赛:秦皇岛和威海站(数论模块和dp模块)

挑战程序设计竞赛&#xff08;第2版&#xff09;练习题 tips&#xff1a;难度&#xff08;个人主观判断&#xff09;&#xff1a; 简单* 简单但卡思维 ** 中 *** 中稍加思考 **** 难 ***** 1 . 记录结果再利用的“动态规划” &#xff08;1&#xff09;基础的动态规划算法&am…