企业网站做口碑营销,手机商城网站制作公司,用模板建商城购物网站,wordpress自适应空白主题目录
1.Docker简介
2.传统虚拟机 vs 容器
3.Docker运行速度快的原因
4.Docker基本组成三要素
5.Docker 平台架构
入门版
架构版 1.Docker简介
Docker是基于Go语言实现的云开源项目。
Docker的主要目标是#xff1a;Build, Ship and Run Any App, Anywhere#xff0c…目录
1.Docker简介
2.传统虚拟机 vs 容器
3.Docker运行速度快的原因
4.Docker基本组成三要素
5.Docker 平台架构
入门版
架构版 1.Docker简介
Docker是基于Go语言实现的云开源项目。
Docker的主要目标是Build, Ship and Run Any App, Anywhere也就是通过对应用组件的封装、分发、部署、运行等生命周期的管理使用户的APP及其运行环境能做到一次镜像,处处运行解决了运行环境和配置问题的软件容器方便做持续集成并有助于整体发布的容器虚拟化技术。
2.传统虚拟机 vs 容器 特性 容器 虚拟机 启动 秒级 分钟级 大小 一般为Mb 一般为Gb 速度 接近原生 比较慢 系统支持数量 单机支持上千个容器 一般几十个
传统虚拟机virtual machine)
传统虚拟机技术基于安装在主操作系统上的虚拟机管理系统如VirtualBox、VMware等创建虚拟机虚拟出各种硬件在虚拟机上安装从操作系统在从操作系统中安装部署各种应用。基于内核的隔离缺点资源占用多、冗余步骤多、启动慢 Linux容器Linux Container简称LXC
Linux容器是与系统其他部分分隔开的一系列进程从另一个镜像运行并由该镜像提供支持进程所需的全部文件。容器提供的镜像包含了应用的所有依赖项因而在从开发到测试再到生产的整个过程中它都具有可移植性和一致性。
Linux容器不是模拟一个完整的操作系统而是对进程进行隔离。有了容器就可以将软件运行所需的所有资源打包到一个隔离的容器中。容器与虚拟机不同不需要捆绑一整套操作系统只需要软件工作所需的库资源和设置。系统因此而变得高效轻量并保证部署在任何环境中的软件都能始终如一的运行。 3.Docker运行速度快的原因
Docker有比虚拟机更少的抽象层
由于Docker不需要Hypervisor虚拟机实现硬件资源虚拟化运行在Docker容器上的程序直接使用的都是实际物理机的硬件资源因此在CPU、内存利用率上docker有明显优势。
Docker利用的是宿主机的内核而不需要加载操作系统OS内核
当新建一个容器时Docker不需要和虚拟机一样重新加载一个操作系统内核。进而避免引寻、加载操作系统内核返回等比较耗时耗资源的过程。当新建一个虚拟机时虚拟机软件需要加载OS返回新建过程是分钟级别的。而Docker由于直接利用宿主机的操作系统则省略了返回过程因此新建一个docker容器只需要几秒钟。
Docker容器的本质就是一个进程。 4.Docker基本组成三要素
Docker并非一个通用的容器工具它依赖于已经存在并运行的Linux内核环境。在Windows上安装Docker时需要依赖WLS也即Windows下的Linux子系统。
Docker实质上是在已经运行的Linux下制造了一个隔离的文件环境因此它执行的效率几乎等同于所部署的Linux主机。
Docker的基本组成部分
镜像image容器container仓库repository
Docker镜像
Docker镜像就是一个只读的模板。镜像可以用来创建Docker容器一个镜像可以创建多个容器。 相当于是一个root文件系统。比如官方镜像 centos:7 就包含了完整的一套 centos:7 最小系统的 root 文件系统。相当于“源代码”docker镜像文件类似于Java的类模板而docker容器实例类似于java中new出来的实例对象。 Docker容器
1. 从面向对象角度
Docker 利用容器Container独立运行的一个或一组应用应用程序或服务运行在容器里面容器就类似于一个虚拟化的运行环境容器是用镜像创建的运行实例。就像是Java中的类和实例对象一样镜像是静态的定义容器是镜像运行时的实体。容器为镜像提供了一个标准的和隔离的运行环境它可以被启动、开始、停止、删除。每个容器都是相互隔离的、保证安全的平台
2. 从镜像容器角度
可以把容器看做是一个简易版的 Linux 环境包括root用户权限、进程空间、用户空间和网络空间等和运行在其中的应用程序。 Docker仓库
Docker仓库是集中存放镜像文件的场所。仓库分为公开仓库和私有仓库两种。最大的公开仓库是Docker官方的Docker Hubhttps://hub.docker.com/ 5.Docker 平台架构
入门版
Docker是一个 C/SClient-Server 结构的系统后端是一个松耦合架构众多模块各司其职。
Docker守护进程运行在主机上然后通过Socket连接从客户端访问守护进程从容器接收命令并管理运行在主机上的容器。 Docker Daemon (dockerd) 是 Docker 的后台服务进程负责管理 Docker 容器、镜像、网络和存储卷等资源。它在后台运行等待 Docker 客户端docker 命令发送请求并根据这些请求执行相应的操作例如启动或停止容器、构建镜像等。Docker Daemon 还处理与底层操作系统的交互通过调用 Linux 内核的功能如 cgroups 和 namespaces来实现容器的隔离和资源管理。
Docker是一个Client-Server结构的系统Docker守护进程运行在主机上 然后通过Socket连接从客户端访问守护进程从客户端接受命令并管理运行在主机上的容器。 容器是一个运行时环境就是我们前面说到的集装箱。可以对比mysql演示对比讲解 架构版
Docker运行的基本流程为
用户是使用Docker Client 与 Docker Daemon 建立通信并发送请求给后者Docker Daemon 作为 Docker 架构的主体部分首先提供 Docker Server 的功能使其可以接收 Docker Client 的请求Docker Engine docker 引擎执行 Docker 内部的一系列工作每一项工作都是以一个 Job作业 的形式存在Job 的运行过程中当需要容器镜像时则从 Docker Registry 中下载镜像并通过镜像管理驱动 Graph Driver 将下载镜像以 Graph 的形式存储当需要为 Docker 创建网络环境时通过网络管理驱动 Network driver 创建并配置 Docker 容器网络环境当需要限制 Docker 容器运行资源或执行用户指令等操作时则通过 Exec driver 来完成Libcontainer 是一项独立的容器管理包Network driver 以及 Exec driver 都是通过 Libcontainer 来实现具体对容器进行的操作
Graph Driver
Graph Driver 是 Docker 中负责管理和存储容器镜像和层的组件。它定义了如何在文件系统中存储和访问这些镜像和层。常见的 Graph Driver 包括 overlay2、aufs、btrfs、devicemapper 和 zfs。这些驱动程序通过不同的文件系统和存储技术实现了对镜像层的高效管理和操作。
Graph
Graph 在 Docker 中指的是容器镜像的层次结构Layer。每个镜像由多个只读层Layer组成每一层都基于前一层进行构建最终形成一个有向无环图DAG, Directed Acyclic Graph。这种结构可以有效地共享和复用镜像层减少存储空间和网络传输的开销。
Docker 使用 Graph Driver 将下载的镜像按层次结构存储每个镜像由多个层组成这些层之间形成有向无环图以实现高效的存储和访问。
-------------------------------------------------------------------------------------------------------------
Libcontainer 是 Docker 中的一个库用于直接与容器的底层 Linux 内核功能进行交互。它提供了一套 API使得 Docker 可以使用 Linux 的 cgroups、namespaces 和其他内核特性来创建和管理容器。Libcontainer 使 Docker 不再依赖于其他外部工具如 LXC来实现容器化而是可以直接通过自己的实现来管理容器的生命周期和资源隔离。这样增强了 Docker 的灵活性和可控性。