欢迎来到《小5讲堂》,大家好,我是全栈小5。
这是是《Docker容器》序列文章,每篇文章将以博主理解的角度展开讲解,
特别是针对知识点的概念进行叙说,大部分文章将会对这些概念进行实际例子验证,以此达到加深对知识点的理解和掌握。
温馨提示:博主能力有限,理解水平有限,若有不对之处望指正!
容器有一个非常好的特点,非常适合进行持续集成和持续交付(CI / CD)工作流。
Docker是一种软件平台,它允许开发人员使用本地容器来构建和运行应用程序和服务。
容器提供了一个标准化的环境,使开发人员可以在任何计算机上工作,而无需担心应用程序在不同环境中的兼容性和依赖关系。
通过使用Docker,开发人员可以简化应用程序的开发、测试和部署过程,提高开发效率并降低问题发生的可能性。
官方提供的示例方案:
响应式部署和扩展
Docker还有一个比较好的特点就是,高度可移植性特点,允许基于容器的平台高度可移植的工作负载。
比如,Docker容器可运行的介质
Docker的可移植性和轻量级的特性还使您可以轻松地动态管理工作负载,并根据业务需求指示实时扩展或拆除应用程序和服务。
Docker使用客户端-服务器架构。
Docker客户端与Docker守护进程进行对话,该守护进程完成了构建,运行和分发Docker容器的繁重工作。
Docker客户端和守护程序可以 在同一系统上运行,或者您可以将Docker客户端连接到远程Docker守护程序。
Docker客户端和守护程序在UNIX套接字或网络接口上使用REST API进行通信。
另一个Docker客户端是Docker Compose,它使您可以处理由一组容器组成的应用程序。
Docker守护程序(dockerd)侦听Docker API请求并管理Docker对象,例如图像,容器,网络和卷。守护程序还可以与其他守护程序通信以管理Docker服务。
Docker客户端(docker)是许多Docker用户与Docker交互的主要方式。当您使用诸如之类的命令时docker run,客户端会将这些命令发送到dockerd,以执行这些命令。该docker命令使用Docker API。Docker客户端可以与多个守护程序通信。
Docker注册表存储Docker映像。Docker Hub是任何人都可以使用的公共注册表,并且默认情况下,Docker已配置为在Docker Hub上查找映像。您甚至可以运行自己的私人注册表。
使用docker pull或docker run命令时,将从配置的注册表中提取所需的图像。使用该docker push命令时,会将映像推送到已配置的注册表。
使用Docker时,您正在创建和使用映像,容器,网络,卷,插件和其他对象。本节是其中一些对象的简要概述。
一个图像是用于创建一个码头工人容器指令的只读模板。通常,一个映像基于另一个映像,并进行一些其他自定义。例如,您可以基于该ubuntu 映像构建映像,但安装Apache Web服务器和您的应用程序,以及运行该应用程序所需的配置详细信息。
您可以创建自己的图像,也可以仅使用其他人创建并在注册表中发布的图像。要构建自己的映像,您可以 使用简单的语法创建一个Dockerfile,以定义创建映像并运行它所需的步骤。Dockerfile中的每条指令都会在映像中创建一个层。当您更改Dockerfile并重建映像时,仅重建那些已更改的层。与其他虚拟化技术相比,这是使映像如此轻巧,小型和快速的部分原因。
容器是图像的可运行实例。您可以使用Docker API或CLI创建,启动,停止,移动或删除容器。您可以将容器连接到一个或多个网络,将存储连接到它,甚至根据其当前状态创建一个新映像。
默认情况下,容器与其他容器及其主机之间的隔离度相对较高。您可以控制容器的网络,存储或其他底层子系统与其他容器或与主机的隔离程度。
Docker用Go编程语言编写,并利用Linux内核的多种功能来交付其功能。
Docker使用一种称为的技术namespaces来提供称为容器的隔离工作区。
运行容器时,Docker会为该容器创建一组 名称空间。
这些名称空间提供了一层隔离。容器的每个方面都在单独的名称空间中运行,并且对其的访问仅限于该名称空间。
Docker的架构主要由三个核心组件组成:
1.Docker引擎(Docker Engine)
也称为Docker守护进程,是整个Docker系统的运行时组件。它负责管理Docker容器的创建、运行和销毁,以及容器间的通信和资源隔离等功能。
2.Docker镜像(Docker Image)
镜像是Docker应用程序和服务的构建块。镜像是只读的、轻量级的文件,它包含了运行应用程序所需的所有文件系统、库和依赖关系。可以将镜像看作是应用程序的静态快照。
3.Docker容器(Docker Container)
容器是基于镜像创建的可运行实例。容器是可移植的、封装了应用程序和其依赖关系的单元,它们在一个隔离的环境中运行。容器可以快速启动、停止和重启,而且相互之间互不干扰。
除了这些核心组件外,Docker还有一些辅助组件,如Docker Compose(用于定义和运行多个容器的应用组)和Docker Swarm(用于管理容器集群和进行容器编排)等。这些组件共同构成了Docker的架构,使得开发人员可以轻松地构建、共享和部署容器化的应用程序和服务。