pgf文件(pdf文件是什么)

none

朋友们好,我是一个操作虫!

在上一篇文章中,我们了解了容器的两个核心,名称空间和cgroup,也清楚了它们的工作原理以及docker和传统虚拟化的区别。

今天,我们来看看docker的镜像。这一次,让我们从使用文件系统的docker映像开始。

联合文件系统

Docker支持多种graphDriver(统一文件系统),包括vfs、deviceMapper、overlay、overlay2、aufs等。其中aufs是最常用的一种,但随着Linux内核引入overlay,overlay也越来越受到重视。

什么是联邦文件系统?我们以叠加为例。overlayfs由三个目录实现:下级目录、上级目录和工作目录,其中下级目录可以是多个,工作目录是工作基目录。挂载后内容会被清除空,用户在使用过程中看不到其内容。最后,联合挂载完成后呈现给用户的统一视图称为合并目录。

让我们先来看看下面的文件结构:

[root @ docker ~] # tree。├—重子1 │├— A │└— B └—重子2 ├— B └— C2目录,4个文件通过叠加共同挂载到一个新的目录中。

mount-t overlay overlay-o lower dir = chongzi1,upper dir = chongzi2,workdir = chongzi chongzi此时我们可以看到,chongzi 1和chongzi2的文件已经联合挂载到了chong zi目录中。

注:不知道大家有没有注意到,我是故意创建了两个B文件,那么联合挂载后显示的是哪个目录B呢?你可以自己判断。

[root @ docker ~] # tree。├├├├│├├│├└└├├├├ζ│└└└ζζζζζζ^└

[root @ Docker ~]# CD chongzi[root @ Docker ~]# RM-RF a[root @ Docker ~]# CD[root @ Docker ~]# Tree。├——冲子│├—— B │└—— C ├——冲子1 │├—— A │└—— B └——冲子2 ├—A ├你可以通过下图来思考一下。

为了看起来更真实,我们通常会把一个操作系统的文件挂载到镜像的“/”目录下,而这个挂载在容器根目录下,用来为容器进程提供隔离执行环境的文件系统就叫做“容器映像”。它还有一个更专业的名字,叫做:rootfs(根文件系统)。

上图可以看到三个层结构,分别是:lowerdir、uperdir和merged,其中lowerdir是只读镜像的层,实际上就是rootfs。上层是下层之上的一层。这一层是读写层,它是在容器启动时创建的,对容器数据的所有更改都发生在这里。最后,合并的目录是容器的挂载点,这是向用户公开的统一透视图。

docker镜像

了解了联邦文件系统之后,让我们进一步分析docker映像。

为了看起来更真实,我们通常会把一个操作系统的文件挂载到镜像的“/”目录下,而这个挂载在容器根目录下,用来为容器进程提供隔离执行环境的文件系统就叫做“容器映像”。它还有一个更专业的名字,叫做:rootfs(根文件系统)。

Docker信息,检查docker的文件系统默认存储:

码头信息

从图中可以看出,目前docker的默认版本已经是overlay2。所以我们把重点放在overlay2上。

通过构建Ubuntu映像的过程,我们知道:

[root @ Docker ~]# Docker Pull ubuntuUsing默认标签:latest latest:Pulling from library/Ubuntu da 7391352 a9b:Pull complete 14428 a6 D4 BCD:Pull complete 2c 2d 948710 f 2:Pull complete Digest:sha 256:c 95 A8 e 48 BF 88 e 9849 f 3 E0 f 723d 9 f 49 fa 12 C5 a 00 cf c6e 60d 299d 8755295 e4c状态:下载了较新的Ubuntu映像:最新

Docker镜像检查Ubuntu: latest可以看到Ubuntu镜像对应的目录,比如LowerDir、UpperDir、MergedDir、WorkDir以及对应的rootfs。

让我们启动一个Ubuntu容器来检查一下:

Docker Run-IDT-Name魏云冲子Ubuntu:最新查看覆盖2挂载状态:

[root @ Docker ~]# mount | grep overlay overlay on/var/lib/Docker/overlay 2/6536 a9b 8521249193 D4 F8 a1 e 18729 deae ade E1 e 321 f 87 b 09 CD 97 e 7 be 675d 459 c 9/merged type overlay(rw,relatime,lower dir =/var/lib/Docker/overlay 2/l/apohnz 2 nxgcrl 4 dry dqn 65 dxa:/var/l

查看工作目录,我们发现它已经包含完整的操作系统文件:

ls/var/lib/docker/overlay 2/id/merged/bin boot dev etc home lib 32 lib 64 libx 32 media mnt opt proc root run sbin srvsys tmpusrvar view init directory:

ls/var/lib/docker/overlay 2/ID/diff/dev等

因此,一个完整的容器层应该由三部分组成,如下图所示:

镜像层:也称为rootfs,提供容器启动的文件系统。

init层用于修改容器中的一些文件,如/etc/hostname、/etc/resolv.conf等。

容器层:使用联合挂载提供给用户的可读可写的目录。

总结

正是因为docker的rootfs增量和联合挂载系统,才有了一层容器镜像,同时也保证了容器镜像的环境一致性。容器完美地解决了从开发到测试到部署的每一个过程。这也是容器的魅力所在。

通过三篇文章,我们对docker有了更清晰的认识。“容器”实际上是由三种技术构建的进程的隔离环境:Linux名称空间、Linux Cgroups和rootfs。

Docker是一个开源的应用程序容器引擎,它允许开发人员将其应用程序和依赖项打包成一个可移植的映像,然后将其发布到任何流行的Linux或Windows机器上。

接下来:我们来说说k8s到底是什么?

多年来致力于互联网搬砖,各种互联网技术都有涉猎。如果你遇到一些问题,可以给我私信或者留言。我们可以一起讨论!

免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。

作者:美站资讯,如若转载,请注明出处:https://www.meizw.com/n/252600.html

发表回复

登录后才能评论