Docker架构

什么是Docker? Docker官网的解释是:Docker is a platform for developers and sysadmins to develop, deploy, and run applications with containers.

Docker是开发人员和系统管理员使用容器开发、部署和运行应用程序的平台

从字面上看,Docker实际可以帮助开发人员或者运维人员来快速,高质量的部署,运行应用程序。

Docker的主要特点是:
A. 灵活性,即使是最复杂的系统也可以容器化
B. 轻量级,容器之间共享主机内核
C. 可互换, 动态更新和升级
D. 可移植性, 本地build,部署到云,在任何地方Run
E. 弹性伸缩,可增加和自动分发容器副本
F. 堆栈化,可以动态,垂直的堆栈化服务。

Docker 有两个特殊的概念,container即容器,image即镜像。
那么容器和镜像的区别是什么呢?

镜像: 是一个可执行包,包含运行应用程序所需的所有内容——代码、运行时、库、环境变量和配置文件。
容器是镜像的运行时实例。可以使用docker ps 查看正在运行的容器列表。

说到这里,有开发人员就会说了,那Docker有什么用?我现在部署在虚拟机上不是很好么,为什么要用Docker?

首先,我们需要比较下Docker容器和虚拟机的区别:
容器在Linux本地运行,并且和其他的容器共享主机的内核。不占用多余的资源,是轻量级的。

相比之下,虚拟机是运行一个完整的Guest操作系统,通过一个管理程序hypervisor 来虚拟访问主机资源,通常,vm提供的环境资源比大多数应用程序所需的资源多。

上图:
图片描述

其次,Docker能干什么呢?
A. 快速、一致地交付应用程序
Docker允许开发人员使用提供应用程序和服务的本地容器在标准化环境中工作,从而简化了开发生命周期。容器非常适合持续集成和持续交付(CI/CD)工作流。

示例场景:
开发人员在本地编写代码,并使用Docker容器与同事共享工作。
他们使用Docker将应用程序推进到测试环境中,并执行自动化和手动测试。
当开发人员发现BUG时,他们可以在开发环境中修复它们,并将它们重新部署到测试环境中进行测试和验证。
测试完成后,向客户提供升级就像将更新后的镜像推送到生产环境一样简单。

B. 响应式部署和扩展

Docker的基于容器的平台支持高度可移植的工作负载。Docker容器可以运行在开发人员的本地笔记本电脑上、数据中心的物理或虚拟机上、云提供商上或多种环境中。
Docker的可移植性和轻量级特性还使得动态管理工作负载变得非常容易,可以根据业务需求在几乎实时的情况下扩展或分解应用程序和服务。

C. 在相同的硬件上运行更多的工作负载

Docker是轻量级和快速的。它为基于管理程序的虚拟机提供了一种可行的、具有成本效益的替代方案,因此您可以使用更多的计算能力来实现业务目标。Docker非常适合高密度环境和中小型部署,在这些环境中,您需要用更少的资源做更多的事情。

总之,一句话,简单啊,运维人员基本啥也别干了,开发人员开发,测试好的包,直接就可以和线上系统对接了,没有准备线上环境,trial测试,这些操作了。另外一点就是成本啊,现在Docker可以更充分的利用资源啊。

Docker遵循客户端 - 服务器架构。 其架构主要分为三个部分。

  1. 客户端(Client):Docker提供命令行界面(CLI)工具,客户端与Docker守护进程交互。客户端可以构建,运行和停止应用程序。客户端还可以远程与Docker_Host进行交互。

  2. Docker_Host:它包含容器,映像和Docker守护程序。它提供完整的环境来执行和运行应用程序。

  3. 注册表(Registry):它是全局映像库。可以访问并使用这些映像在Docker环境中运行应用程序。

如下图所示 -

Docker守护进程

这是一个用于监听Docker API请求的进程。 它还管理Docker对象,如:映像,容器,网络等。守护进程还可以与其他守护进程通信以管理Docker服务。

Docker客户端

Docker客户端是许多Docker用户与Docker进行交互的主要方式。当使用docker run这样的命令时,客户端将这些命令发送到docker d,然后将其运行。docker命令使用Docker API。

Docker注册管理

Docker注册表用于存储Docker映像。Docker提供Docker HubDocker Cloud,这是任何人都可以使用的公共注册表。Docker配置为默认在Docker Hub上查找映像。

当我们使用docker pulldocker run命令时,从配置的注册表中提取所需的映像。 当使用docker push命令时,映像被推送到配置的注册表中。

原文地址:https://www.cnblogs.com/fan-1994716/p/14958454.html