Docker之原理

98°冷暖 阅读:49 2022-08-03 21:44:25 评论:0

一、基础概念

镜像(Image):Docker 镜像是用于创建 Docker 容器的模板,比如 Ubuntu 系统。

镜像仓库(Registry):Docker 仓库用来保存镜像,可以理解为代码控制中的代码仓库。

有时候使用Docker Hub这样的公共仓库可能不方便,这种情况下用户可以使用registry创建一个本地仓库供私人使用,这点跟Maven的管理类似。

容器(Container):容器是独立运行的一个或一组应用,是镜像运行时的实体。

Docker 主机(Host):一个物理或者虚拟的机器用于执行 Docker 守护进程和容器。

Docker 客户端(Client):Docker 客户端通过命令行或者其他工具使用 Docker SDK (https://docs.docker.com/develop/sdk/) 与 Docker 的守护进程通信。

数据卷(Volume):因为Docker里产生的数据在容器删除后就会丢失。所以 Docker 提出了卷的概念。

卷是容器上的一个或多个目录(即:多个卷),由 Docker daemon 挂载到容器中。此类目录可绕过联合文件系统,与宿主机上的某目录绑定(即关联)。所以卷不属于联合文件系统。

主要作用是用来持久化保存和共享容器的数据。

Docker Machine:Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

结构图

二、状态

三、底层核心

namespace

命名空间(namespaces)是 Linux 为我们提供的用于分离进程树、网络接口、挂载点以及进程间通信等资源的方法。

CGroups(control groups)

UnionFS(union file system)

UnionFS 其实是一种为 Linux 操作系统设计的用于把多个文件系统『联合』到同一个挂载点的文件系统服务。

AUFS 即 Advanced UnionFS 其实就是 UnionFS 的升级版,它能够提供更优秀的性能和效率。

Docker 镜像其实本质就是一个压缩包文件。镜像文件的分层文件系统。

Docker镜像采用分层构建的机制,最底层为bootfs,其上为rootfs.

  bootfs: 用于系统引导文件系统,包括bootloader和kernel,容器启动完成后,bootfs会被卸载,以节省内存空间.

  rootfs: 它在运行中的docker容器中变现为根文件系统.

Docker容器实例:

此镜像显示了Docker的镜像层级,从上到下分别为:

  可写层

  add Apache 和 add emacs(类似于vim的编辑器): 这两层为自己通过yum安装在镜像中的工具.

  Debian: 这是为安装的工具提供的基本的最小安装的根文件系统已共Apache能运行起来.这里使用的是Debian.还可以使用CentOS等.

  bootfs: 这一层则是启动Debian这个rootfs所需的bootloader和kernel,通常在将Debian启动起来后,它将自动被卸载.

联合文件系统层次结构实例

四、隔离机制

进程隔离(namespaces)

网络隔离(namespaces)

文件系统隔离(挂载)(namespaces)

物理资源隔离(例如 CPU、内存、磁盘 I/O 和网络带宽。)(CGroup)

五、Docker 存储驱动

Docker支持AUFS(默认)、Btrfs、Devicemapper、OverlayFS、ZFS五种存储驱动。

六、Libcontainer - runtime管理工具

Docker所有对容器生命周期进行管理的操作都是通过调用Libcontainer的API来实现的。

所以,Libcontainer本质是一种 runtime 管理工具,只对容器运行时的相关状态和操作进行管理的工具。

Libcontainer的API主要包括:

运行容器、暂停/恢复容器、销毁容器、向容器发送信号、获取容器信息(ID、进程、状态、配置等)、修改容器配置、Checkpoint/Restore 容器。

相关工具:runC,是基于 Libcontainer 的隶属于 OCI 开源组织的一个 容器runtime管理工具。

参考资料

Docker1 架构原理及简单使用

理解Docker(1):Docker 安装和基础用法

Docker 核心技术与实现原理

Docker原理及使用

深入解析Docker 架构原理


本文参考链接:https://www.cnblogs.com/wangwangfei/p/13332759.html
标签:Docker
声明

1.本站遵循行业规范,任何转载的稿件都会明确标注作者和来源;2.本站的原创文章,请转载时务必注明文章作者和来源,不尊重原创的行为我们将追究责任;3.作者投稿可能会经我们编辑修改或补充。

搜索
排行榜
关注我们

一个IT知识分享的公众号