系统管理员’集装箱指南

在他/她的工作过程中,任何一个IT行业的人都会遇到“集装箱”这个词。毕竟,它现在是最过剩的条款之一,这也表明了不同人的不同事物,这取决于背景。标准的Linux容器只不过是在基于Linux的系统上运行的常规进程。由于Linux安全限制,资源限制和命名空间,此过程类别与其他进程组分开。

识别正确的流程

当你启动一个当前 庄稼 Linux系统和查看过程 CAT / PROC / PID /c,它立即知道这个过程发生在一个 c。一旦你仔细看看 / proc / pid / status,开始注意到能力。然后您可以通过退房查看SELinux标签 / proc / self / attr / current。此外,看见 / proc / pid / ns 为您提供了当前进入的命名空间的列出的视图。

因此,如果容器被定义为具有资源约束,命名空间和Linux安全约束的进程,则可以争议Linux系统上的每个进程存在于容器中。这恰恰是Linux通常被视为容器的原因,反之亦然。

容器组件

术语“Container Runtimes”是指用于修改资源限制,命名空间和安全性的工具,以及用于启动容器。 “容器图像”的想法最初由Docker引入,并涉及由两个单位组成的常规TAR文件:

  • JSON文件:这决定了如何 rootfs. 必须运行,包括 入口点 或命令所需运行 rootfs. 一旦容器启动,容器的工作目录,环境变量要建立该特定容器,以及一些其他设置。
  • rootfs.:这是一个容器根文件系统,它用作类似于操作系统的常规root(/)的系统上的目录。
  • 会发生什么,Docker开始“柏油 “这件事” rootfs. 虽然JSON文件开发基本映像。用户现在能够在额外的内容中安装额外的内容 rootfs.,从而形成一个新的json文件,然后 柏油 使用更新的JSON文件的实际图像与新图片之间的变化。因此,创建分层图像。

构建集装箱块

通常用于形成容器图像的工具称为容器图像构建器。在某些情况下,集装箱引擎负责此任务,但也可以找到许多独立工具来创建容器图像。这些容器图像或tarball被采取 Docker, 然后移动到Web服务。这使它们稍后会被Docker拉动,这也开发了一种用于拉动它们的协议,并将Web服务作为容器注册表递音.

术语“集装箱发动机”是能够从容器注册表中拉出容器图像的程序,然后将它们重新组装到容器存储器上。如果不是全部,集装箱引擎也负责启动容器运行时.

容器存储通常是母牛或写入编写的分层文件系统。一旦容器图像从容器注册表中拉下来,需要完成的第一件事就是untar rootfs. 所以它可以放在磁盘上。如果在图像中存在多个图层,则每个层都会下载,然后存储在母牛文件系统的单独层上。这意味着每个单层都包含单独存储的层,这增加了分层图像的共享。集装箱发动机倾向于支持多种容器存储,例如 ZFS., Btrfs., 覆盖, AUFS., 和 devicemapper.

容器引擎已完成将容器图像下载到容器存储后,它必须形成容器运行时配置。此运行时配置是来自用户或呼叫者的输入以及来自容器图像规范的内容的组合。容器运行时配置的布局 以及 爆炸 rootfs. 通常由OCI标准体标准化 .

容器引擎释放能够读取容器运行时规格的容器运行时,修改Linux cs. 在此过程中以及Linux命名空间和安全限制。之后,将容器命令启动以形成容器的PID 1。到目前为止,集装箱发动机能够继电 stdout./斯丁 在对容器上获取​​控制时,回呼叫者。

请记住,使用Linux的各个部件引入了几个容器运行时,因此可以隔离容器。这允许用户运行具有KVM分离的容器。它们还能够应用管理程序策略。由于标准运行时规范的可用性,工具可以由单个容器引擎启动。即使是Windows也可以使用OCI运行时规范来启动Windows容器。

集装箱协调机 更高的水平。这些工具有助于协调各种不同模式的容器的执行。它们与集装箱发动机进行互动,用于管理容器。 Orchestrator负责讲述集装箱发动机将集装箱和电线网络一起启动。当负载展开时,它们可以监控容器并引入那些。

容器的好处

容器提供众多好处,以使Devops工作流程(包括:

  • 更简单 更新
  • 一个简单的解决方案,可实现一致的开发,测试和生产环境
  • 支持 对于众多框架

当用户写入,测试和部署容器内的应用程序时,环境在递送链的各个部分处保持相同。这意味着单独的团队之间的协作变得更容易,因为它们都在相同的集装箱环境中工作。

当软件需要持续交付时,它需要应用程序更新以持续,简化的时间表推出。随着应用更新变得更容易,这是可能的。一旦应用程序被分发到众多微服务器中,每个单个一个都会在不同的容器中托管。如果通过重新启动容器来更新应用程序的一部分,其余部分仍然不间断。

在执行Devops时,它有助于使敏捷性方便地在各种部署平台或编程框架之间切换。容器提供了敏捷性,因为它们对部署平台和编程语言进行了相对不可知的。几乎任何类型的应用程序都可以在容器内运行,无论它写入的语言如何。更重要的是,可以在各种主机系统之间轻松移动容器。

结束言论

容器有很多原因,为什么容器简化了Devops。一旦系统管理员了解容器的基本性质,他们就可以在计划在组织迁移时轻松地使用该信息。