一、Docker介绍
2022-11-03 本文已影响0人
离港时的灯塔
1、Docker容器不是虚拟机。使用Docker容器运行多个相互隔离的应用,Docker是内核级的虚拟化。
2、对于Docker,应用的所有依赖都打包在Docker镜像中,Docker容器是基于Docker镜像创建的。
3、应用的源代码与它的依赖都打包在Docker镜像中,不同的应用需要不同的Docker镜像。不同的应用运行在不同的Docker容器中,它们是相互隔离的。
4、Docker守护进程可以直接与主操作系统进行通信,为各个Docker容器分配资源;它还可以将容器与主操作系统隔离,并将各个容器互相隔离。虚拟机启动需要数分钟,而Docker容器可以在数毫秒内启动。由于没有臃肿的从操作系统,Docker可以节省大量的磁盘空间以及其他系统资源。
5、镜像(Image)不包含内核的linux精简系统。就是一堆只读层(read-only layer)的统一视角。镜像多个只读层,它们重叠在一起。除了最下面一层,其它层都会有一个指针指向下一层。这些层是Docker内部的实现细节,并且能够在主机(译者注:运行Docker的机器)的文件系统上访问到。统一文件系统(union file system)技术能够将不同的层整合成一个文件系统,为这些层提供了一个统一的视角,这样就隐藏了多层的存在,在用户的角度看来,只存在一个文件系统。
简单的说镜像就是一个轻量级的可执行的库,包含代码、运行时库和配置文件、环境等
6、容器(container)的定义和镜像(image)几乎一模一样,也是一堆层的统一视角,唯一区别在于容器的最上面那一层是可读可写的。
容器 = 镜像 + 读写层。并且容器的定义并没有提及是否要运行容器。
7、一个运行态容器(running container)被定义为一个可读写的统一文件系统加上隔离的进程空间和包含其中的进程。下面这张图片展示了一个运行中的容器。
容器8、正是文件系统隔离技术使得Docker成为了一个前途无量的技术。一个容器中的进程可能会对文件进行修改、删除、创建,这些改变都将作用于可读写层(read-write layer)。下面这张图展示了这个行为。
文件系统隔离技术
9、镜像的分层是基础联合文件系统(UninFS简称UFS)的,每一个镜像是基于上一个镜像来做的,类似于增加一层或者打一个补丁。