使用Docker简化DevOps

Istock 935964092

码头工人是一个开源项目,它改变了我们对将应用程序部署到服务器的看法。通过利用Linux内核的一些惊人的资源隔离特性,Docker可以轻松地将服务器应用程序隔离到容器中,控制资源分配,并设计更简单的部署管道。此外,Docker支持所有这一切,而不需要成熟虚拟机的额外开销。

让我们看看Docker是如何工作的。

除了管理程序之外,在虚拟机上运行的应用程序还需要操作系统的完整实例和任何支持库。然而,容器使用共享的操作系统。这意味着在系统资源方面,它们比管理程序要高效得多。容器不是虚拟化硬件,而是依赖于单个Linux实例。这意味着您可以留下99.9%的无用VM垃圾,只留下一个包含您的应用程序的小而整洁的胶囊。其本质区别在于,在容器中运行的进程与主机上的本机进程类似,并且不引入与管理程序执行相关的任何开销。此外,应用程序可以重用库并在容器之间共享数据。

因此,通过完美调优的容器系统,在相同的硬件上可以拥有多达4到6倍数量的服务器应用程序实例。集装箱受欢迎的另一个原因是它们适合持续集成/持续部署

现在,在快速浏览了Docker的工作原理之后,让我们了解一下码头工人的架构。

无标题的图片

Docker使用客户机-服务器体系结构.码头工人的客户端和码头工人说话守护进程,它负责构建、运行和分发Docker容器的繁重工作。Docker客户机和守护进程可以运行在相同的系统上,或者您可以连接Docker客户端到远程Docker守护进程。Docker客户机和守护进程通过UNIX套接字或网络接口使用REST API进行通信。另一个Docker客户端是Docker Compose,它允许您处理由一组容器组成的应用程序。

Docker遵循Client-Server架构,包括三个主要组件客户端码头工人主机,码头工人注册表

码头工人的客户

Docker API用于Docker命令。Docker用户可以通过客户端与Docker交互。当任何Docker命令运行时,客户机将它们发送给Docker守护进程,由后者执行。Docker客户机可以与多个守护进程通信。

码头工人主机

Docker主机提供了一个完整的环境来执行和运行应用程序。它由Docker守护进程、映像、容器、网络和存储组成。如前所述,守护进程负责所有与容器相关的操作,并通过CLI或REST API接收命令。它还可以与其他守护进程通信以管理其服务。

码头工人的注册表

Docker注册中心是提供存储和下载映像位置的服务。换句话说,Docker注册表包含Docker存储库,存储一个或多个Docker映像。您还可以使用私有注册中心。公共注册中心包括两个组件,即Docker Hub和Docker Cloud。在使用注册表时,最常见的命令包括docker push、docker pull和docker run。

安装码头工人

Docker在Linux上本机运行,因此根据目标发行版的不同,它可以像Sudo apt-get install docker.io.由于Docker守护进程使用特定于linux的内核特性,因此无法在Mac OS或Windows中本机运行Docker。相反,您应该安装一个名为Boot2Docker.该应用程序由一个VirtualBox虚拟机、Docker本身和Boot2Docker管理实用程序组成。您可以按照macOS和Windows的官方安装说明在这些平台上安装Docker。

Docker如何在您的项目中帮助您?

当您的开发团队变更时向项目引入新的开发人员总是需要时间。在他们开始编码之前,他们必须为项目设置他们的本地开发环境——例如,一些本地服务器、数据库或第三方库。这可能需要几个小时到许多天,这取决于项目的复杂性和项目设置手册的好坏。Docker自动化了这个设置和安装工作,所以新的开发人员可以从第一天开始高效工作。他们不需要手动完成所有工作,只需运行一个命令就可以为他们准备好开发环境。这节省了很多时间,而且开发团队越大,轮换次数越多,使用Docker获得的好处就越多。

当你的软件在不同的环境中运行时,您可以注意到在运行应用程序的机器之间不一致的应用程序行为。开发人员计算机上的某些东西可能无法在服务器上工作。而且问题的数量随着每一个新的环境而增加——比如另一个服务器(测试服务器vs.生产服务器)或另一个开发人员的计算机使用不同的操作系统。Docker允许你在与外界分离的容器中运行软件,所以你的应用程序可以在任何环境中一致地工作。

当你的软件增长时当开发人员每天向软件中添加新的库、服务和其他依赖项时,它包含许多零零碎碎的部分。软件变得越复杂,跟踪运行所需的所有部分就越困难。在没有Docker的情况下,所有的项目设置更改都必须传达给其他开发人员并存档。否则,他们的代码版本将停止工作,而他们不知道原因。在Docker中,软件所需的所有组件都在Docker配置文件中指定(如Dockerfile和Docker - composition .yml)。

当您希望您的软件具有可伸缩性时并处理更多的用户。Docker不会自动使您的应用程序可伸缩,但可以在这方面提供帮助。Docker容器可以在多个副本中启动,这些副本可以并行运行。因此,用户越多,启动的容器就越多(例如,在云中)。在您这样做之前,您的软件必须为同时运行多个实例做好准备。但是,如果已经消除了可伸缩性的障碍,Docker容器将在启动可伸缩应用程序时派上用场。

当您的主机基础设施更改时你也不想被锁起来。小型网站和应用程序不需要复杂的主机基础设施。但是当业务增长和发展时,服务器需求也会随之变化。在快节奏的商业环境中,web基础设施必须足够灵活,能够快速适应。两者都能确保你的网站不会崩溃基础设施的成本与实际需求相对应。而且,由于Docker容器是统一的,而且被很好地采用,它们几乎可以在任何服务器环境中启动。

结论

我们介绍了Docker是什么,它的工作原理以及它如何对您的项目有益。

如果你喜欢这篇文章,觉得它很有知识性,一定要和你的同事分享。也请在评论区告诉我我即将发布的博客的主题。

关于“使用Docker简化DevOps”的思考

  1. 辨析了. .
    我们提供
    泰伦加纳商业咨询服务| V2 IT解决方案
    V2 IT解决方案是泰伦加纳最好的商业咨询服务。作为最具创新的商业咨询服务之一,我们提升您的业务。

  2. 很好地解释道。我只是想知道,如果一个网站在微服务中出现了故障,在哪里进行认证,是在每个docker微服务还是一个普通的微服务,然后将经过认证的用户重定向到特定的资源。请分享你的想法。

留言回复

您的电邮地址将不会公布。必填项已标记

这个网站使用Akismet来减少垃圾邮件。了解如何处理您的评论数据

Sandesha Mhaiskar

Sandesha是一名JAVA后端开发人员。她是一名Scrum认证大师,拥有8年以上的Java软件工程师经验,专注于Spring-Boot、Hibernate、API和DB技术。在业余时间,她是一个狂热的长篇读者,热爱真实犯罪纪录片,她是一个旅行癖。

更多来自作者

关注我们
推特 Linkedin 脸谱网 Youtube Instagram