容器检查点

简介

此检查点旨在帮助您评估您从我们的容器介绍文章中学到的内容,其中我们介绍了容器生态系统以及DockerKubernetes,两种常见的容器解决方案。您可以使用此检查点来评估您对这些主题的了解,查看关键术语和命令,并查找继续学习的资源。

容器化是在操作系统级别隔离开发环境以创建可移植运行时环境的过程。Containers从主机共享资源,使您能够在可预测和受控的环境中运行应用程序。使用容器来抽象基础架构并隔离应用程序,可以让您高效且一致地扩展开发流程和测试。

在这个检查点中,你会发现两个部分综合了介绍性文章的中心思想:一个部分总结了容器生态系统的目的,另一个部分介绍了运行命令,每个部分分别包括Docker和Kubernetes特定的小节。在每个部分中,都有互动组件来帮助您测试您的知识。在这个检查点结束时,您将找到继续学习容器的机会。

资源

什么是容器?

Containers为开发您的应用程序提供了一个可预测且可控的环境。容器引擎是人们在提到容器时通常所指的意思。

要了解容器,熟悉几个关键的容器化工具很重要。

<$>[信息] [标签集装箱化术语要了解 ] 定义以下每个术语,然后使用下拉功能检查您的工作。

[详细信息容器引擎 容器引擎是一个完整的容器化解决方案,引擎包括容器、容器运行时、容器镜像和构建它们的工具。该引擎还可能包括容器图像注册表和容器编排。Docker是部署最多的容器引擎之一。 ]

[详细信息容器图像 A_CONTAINER IMAGE_是为在容器内构建环境而提供的模板。当镜像运行时,镜像的只读层被覆盖在读写层上,读写层可以在单个容器实例中调整。

A_IMAGE REGISTRY_是保存容器镜像的存储库。您可以使用镜像注册表或存储库来管理和共享您的容器镜像。 ]

[详细信息容器运行时 _Container Runtime_管理容器的启动和执行。有两组集装箱运行时:开放集装箱倡议(保监局)和集装箱运行时倡议。

《开放集装箱倡议》提供了集装箱格式的规范和标准。OCI为容器的运行提供了一个基线,例如常用的runc

Container Runtime Initiative侧重于容器编排。 ]

[详细容器业务流程 编排涉及供应、配置、伸缩、调度、部署、监控等,通常用于自动化容器部署。 ] <$>

由于其可移植性和可预测的性能,许多开发人员更喜欢容器化。通过抽象基础设施,可以在多台机器上以完全相同的方式测试应用程序。基线环境中的这种稳定性使开发人员能够远程协作工作。

<$>[信息] [标签检查自己 ] [详细说明使用容器时的一些常见目标是什么? 为了确保强大的开发和生产环境,您可能需要满足以下需求:

  • 可预测和可移植的性能
  • 使用效率和内存效率
  • 具有持久数据选项的无状态
  • 具备集群联网能力的隔离容器
  • 记录容器测试期间的错误和输出
  • 应用和基础设施脱钩
  • 专业化和微服务

` <$>

当容器从相同的基本映像创建时,它们提供了一个可靠的环境,可以满足您的开发和测试需求。这种一致性使您能够在应用程序开发期间根据需要创建和销毁容器。

如果您正在处理一个需要在容器中持久化数据的长期项目,您可以挂载一个卷来持久化数据存储和跨容器的数据共享

Kubernetes ** Docker** 是两种常见的容器解决方案。在下面的部分中,您可以通过使用介绍性文章中的这两个选项来评估您对它们之间的差异了解到了什么。

<$>[信息] [标签检查自己 ] [详细信息:Docker和Kubernetes有什么不同? Docker是一种容器引擎,最常用于一次运行一个或两个容器化应用程序。

Kubernetes是一款编排软件,可以让您大规模运行多个重叠的容器。Kubernetes最初使用Docker运行时,但现在主要使用Containerd抽象层。 ] <$>

什么是Docker?

使用Docker,,您可以在容器中管理应用程序进程。Docker通常用作容器引擎,可以在多种操作系统上运行。

您可以通过映射端口或允许Docker选择一个随机的(可能未使用的)端口来将Docker容器映射到主机上。这个过程简化了您的测试环境。有关使用Docker的更多信息,您可以查看Docker生态系统:通用组件介绍

Docker使用特定的术语来支持其系统设置。使用Docker术语评估您的知识,以了解:

<$>[信息] [label Docker术语须知 ] 定义以下每个术语,然后使用工具栏功能检查您的工作。

[详细信息Docker编写 Docker Compose是一个命令行工具,允许您运行Yaml文件定义的多容器应用程序环境。YAML配置文件将定义设置,通常包括Web服务器环境、端口重定向和共享卷。 ]

[详细信息Docker Hub Docker Hub是由Docker项目背后的公司Docker管理的一个特定的_镜像注册表_。 ]

[详细信息Docker图像 A_DOKER IMAGE_是构建容器的模板。有许多常见的图像可供使用。 ]

[详细信息Docker卷 Docker Volume可用于跨容器持久化数据,包括停止或删除的容器。 ]

[详细信息群 DOCKER群模式是一种集群管理方式,称为_群_。SwarmKit是一款内置在GO中的开源编排工具包,可用于集群模式。

这与之前的Docker Swarm工具不同,后者现在被称为Swarm Classic,指的是Docker现在存档的原生集群。Swarm Classic是大规模集群的一种选择。 ]

<$>

Docker容器提供了一个可移植的、一致的运行时环境,通常可以部署到Kubernetes集群。

什么是Kubernetes?

使用Kubernetes,您可以跨机器集群运行和管理容器化应用程序和服务。Kubernetes经常用于扩展容器化需求。

Kubernetes使用特定的术语来支持其系统设置。用库伯内斯术语评估你的知识,以了解:

<$>[信息] [LabelKubernetes Terms to Know ] 定义以下每个术语,然后使用下拉功能检查您的工作。

[详细部署 A部署是使用复制集进行周期管理的Kubernetes工作负载。

复制集用于管理Pod,这与定义用于扩展复制Pod的Pod模板的Replication控制器非常相似。 ]

[详细信息节点 集群中的服务器是_Nodes_,其中一个服务器充当集群的_Control Plane_,其他服务器充当_Worker Nodes_。每个节点都包括一个容器运行时,用于管理该节点上容器中的应用程序和服务。 ]

[详情] Pod 作为单个应用程序控制的容器被分组为_pod_。Pod由_replication controller_或_replication set_创建。 ] <$>

您的Kubernetes集群由一个中央服务器和节点组成,包括帮助集群功能和服务器相互通信的特定组件。有关Kubernetes架构的更详细的描述,您可以查看Kubernetes.简介

为了促进集群中服务器的联网配置,Kubernetes需要控制平面上的特定组件,这些组件也可以跨节点访问,包括:

  • 可以跨节点分布的键值存储,如etcd.
  • 配置工作负载和发送命令的API服务器(kube-apiserver)。
  • 管理工作负载、执行任务、调整集群的控制器管理器(kube-控制器-Manager)。
  • 将工作负载分配到特定节点的调度器(kube-Scheduler)。
  • 代表集群与云提供商、云资源、云服务进行交互的云控制器(Cloud-control-Manager)。

节点还需要特定的组件来与中央服务器通信并运行为其分配的工作负载,包括:

  • 每个节点上有一个容器运行时,如docker或runc.
  • 类似kubelet的通信服务往返于控制面;kubelet使用a_MANIFEST_来定义它接收到的工作负载,并管理节点的工作状态。
  • 将请求转发到容器的小代理,最常见的是kube-proxy

Docker和Kubernetes都有命令行工具,每个都有自己的语法。您还可以使用Docker DesktopKubernetes仪表板在部署时通过Web浏览器访问来管理容器。

使用命令行

您开始使用linux命令line和我们的介绍性文章Cloud servers,Configuring a Web Server With][有关Web服务器solutions](https://www.digitalocean.com/community/tutorial_series/getting-started-with-cloud-computing Web-Servers),的文章并使用databases.上的文章]管理您的数据库

在容器简介中,您已经通过以下命令继续熟悉命令行:

  • cat显示一个文件。
  • chmod使用新工具设置权限。
  • curl以指定位置(URL)传输数据。
  • echo显示作为参数传递的字符串。
  • env打印所有环境变量。
  • exit关闭Docker shell。
  • mkdir创建新目录。
  • pwd打印当前工作目录。
  • systemctl管理Docker守护进程。
  • tail打印文件的最后10行。
  • watch一致地运行特定命令(默认情况下每两秒一次)。
  • whoami打印当前用户的用户名。

您还使用了针对不同容器引擎的唯一命令语法,并使用Homebrew包管理器)为您的Kubernetes集群安装了mini kube。在下面的部分中,您将回顾在Docker和Kubernetes的介绍性文章中运行的命令。

运行Docker命令

在介绍Docker的文章中,您在Ubuntu服务器上安装和管理了Docker容器。默认情况下,dockercommand只能由超级用户、前置sudo权限或docker组中的用户运行。

您使用docker命令将选项、子命令和参数传递给您的Docker容器:

  • docker exec用于在主动容器中运行命令,使用--workdir标志指定应该在哪个目录中运行命令,--user标志用于以不同用户身份运行命令,-e标志用于将环境变量传入容器或--env-file标志用于指定.env文件。
  • Docker Images查看您已下载到系统中的镜像。
  • docker info以访问系统范围的信息。
  • docker ps查看您系统上运行的活动容器,使用-a开关查看所有活动容器和非活动容器,使用-l开关查看您创建的最新容器。
  • docker rename重命名您的容器。
  • docker rm与容器ID或名称一起移除容器。
  • docker run从指定镜像启动容器,使用组合的-it开关进行交互外壳访问。
  • docker earch搜索Docker Hub上可用的镜像,docker Pull从注册表下载指定的镜像。
  • docker start与容器ID或名称一起启动停止的容器。
  • docker stop,带有容器ID或名称,用于停止正在运行的容器。
  • docker tag对创建的镜像进行重命名。
  • 扩展坞卷管理您的数据量。

<$>[信息] [标签检查自己 ] 使用下拉菜单功能获取答案。

[详细说明dockerdocker exec命令有什么区别? docker exec命令用于运行程序并检查当前正在运行的容器,而您可以运行docker run来创建新的容器。 ]

[详细说明什么是Dockerfile? 您可以使用docker Build命令使用Dockerfile构建镜像,尽管您在这些介绍性文章中没有运行该命令。Dockerfile用于构建镜像,而使用docker pose运行YAML配置文件将管理编排。 ] <$>

您还使用了--hel选项来访问各种子命令可用的选项,例如以下开关:

  • --名称为容器命名。
  • --rm创建一个容器,容器在停止时会自动移除。
  • -d会将容器从终端分离出来,在后台运行。
  • -v通过命名来管理您的Docker卷或创建绑定挂载(指定/~/时)。

Docker还提供了Docker Compose命令行界面工具),用于管理多容器环境。您设置了一个YAML配置文件来创建一个具有端口重定向和共享卷的Web服务器环境,并运行了以下命令来管理您的容器:

  • docker compose up运行集装化环境。
  • docker compose ps提供运行容器和端口重定向的相关信息。
  • docker compose logs访问您容器的日志。
  • docker compose pause暂停容器,docker compose unpause恢复容器。
  • docker compose stop会停止容器。
  • docker compose down移除与环境关联的容器、网络和卷。

<$>[信息] [标签检查自己 ] 使用下拉菜单功能获取答案。

[详细说明使用docker命令和运行docker pose有什么主要区别? docker命令运行命令行中的所有子命令,而docker pose运行一个YAML文件,以提供可用于多个容器环境的配置数据。以docker pose开头的容器也可以共享网络和数据量。 ]

是什么让Docker Compose成为一个有用的工具? 当你有一个更大的部署,有多个容器并行运行时,你可以编写一个YAML文件来设置容器配置,并运行docker compose来向所有组件发出命令并将它们作为一个组进行控制。因此,docker compose可以帮助您随着应用程序的增长以及您需要强大的编排设置来扩展容器管理。 ] <$>

要使用您的私有Docker Registry和Docker Hub]管理您的镜像,您可以运行以下命令:

  • docker login,使用您的用户名的-u开关登录。
  • docker formation提交新的docker镜像,其中-m开关提供提交消息,-a开关指定作者。
  • 对接推送,推送您的镜像,包括推送到您自己的库中。
  • 对接拉取,将您的镜像拉到新机器上。

对于持久化数据,您还可以设置Docker Volume.您已将docker volume命令与create子命令配合使用来创建新卷,使用spect子命令来验证系统上的卷,使用ls子命令来列出卷,并在卷名后附加:ro以获得只读权限。接下来,您可以在Docker容器和host.之间共享数据

Docker是一种常见的容器引擎;Kubernetes是一个可以运行Docker容器引擎的编排平台。

运行Kubernetes命令

在介绍Kubernetes的文章中,您运行了带有Docker框架的mini kube工具来模拟在单台机器上运行的Kubernetes集群,从而可以访问您的Kubernetes集群的浏览器仪表板。

您运行了以下mini kube命令:

  • mini kube start启动工具,开启kubectl,可选择使用-p--profile选项指定集群。
  • mini kube dashboard通过自动端口转发访问Kubernetes仪表板,使用--url选项帮助通过SSH隧道从远程服务器转发端口。
  • mini kube服务,带有指定的服务和--url选项,用于检索正在运行的服务的URL。
  • mini kube配置通过set ememoryget profile等子命令管理您的集群。
  • mini kube Delete删除服务,以便重新部署。
  • mini kube mount将本地文件系统中的目录临时挂载到集群中,使用local_path:mini kube_host_path语法指定容器中的目录和位置。
  • mini kube Profile与指定的集群一起切换活动配置文件。

您还将kubectl命令与以下子命令配合使用:

  • kubectl get pods获取集群中运行的所有实例的列表,使用-a参数查找所有命名空间。
  • kubectl创建部署将命名部署创建为服务,使用--Image选项调用指定的远程镜像。
  • kubectl exposed ployment公开命名部署,使用--port选项和--type选项指定端口。
  • kubectl Get Service检查指定的服务是否正在运行。
  • kubectl get nodes列出集群中的主动节点(S),使用--kubeconfig选项指定不同的Yaml配置文件。

要开始使用托管Kubernetes服务,您可以查看DigitalOcean Kubernetes QuickStart documentation.

下一步怎么办?

通过对容器和流行的数据库容器引擎有了更深入的了解,您可以在构建应用程序时将开发环境容器化以保持一致性。对于如此复杂的主题,这可能看起来太简单了,但您现在有了一个(或两个)容器生态系统!您可以在其中进行实验、构建应用程序和扩展项目。

要构建更多的Docker生态系统,您可以接下来遵循以下教程:

如果您更喜欢直接进入操作,请尝试DigitalOcean Marketplace Docker One-Click Solution,它会启动安装了Docker的Droplet。您还可以查看如何从容器镜像部署上的DigitalOcean产品文档。

要继续开发您的Kubernetes集群,您可以阅读以下文章:

如果您想释放资源用于开发,可以迁移到DigitalOcean托管Kubernetes(DOKS)服务。您还可以使用DigitalOcean Container Registry(DOCR)来为Docker容器和DigitalOcean Kubernetes集群提供额外支持。

有了新获得的容器知识,您就可以使用安全措施继续您的云之旅。如果您还没有,请查看我们关于[云服务器](https://www.digitalocean.com/community/tutorial_series/getting-started-with-cloud-computing Cloud-Servers)、Web服务器数据库的介绍性文章。

Published At
Categories with 技术
comments powered by Disqus