Docker学习记录 - 原理

一、基础概念

镜像(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 Machine:Docker Machine是一个简化Docker安装的命令行工具,通过一个简单的命令行即可在相应的平台上安装Docker,比如VirtualBox、 Digital Ocean、Microsoft Azure。

结构图

Docker学习记录 - 原理

 

二、状态

Docker学习记录 - 原理

 

三、底层核心

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容器实例:

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)

 

上一篇:Kubernetes namespace介绍


下一篇:vue搭建项目之设置axios