第 3 章 容器 - DevOps 开发运维训练营

网友投稿 671 2022-11-17

第 3 章 容器 - DevOps 开发运维训练营

第 3 章 容器 - DevOps 开发运维训练营

第 3 章 容器

迄今为止,我们已经了解了 DevOps 实践和持续集成。但是,最近,容器成为了一个流行词,每个人都希望有第一手的经验,主要原因是为了高效地利用资源。docker 是用于操作系统虚拟化的一个开源产品,可以自动化应用程序在软件容器中的部署。在 Dev 或者 QA 环境中,运用容器以得到更高的资源利用率,是极其实用的。

在本章中,我们将尝试安装和创建一个样板容器,目标是熟悉 Docker 容器,对容器在应用部署中的用途有所感觉。

本章提供容器的简单概述。我们将聚焦于如下主题:

Docker 容器概述;理解虚拟机和容器之间的差别;Docker 的安装与配置;创建一个 Tomcat 容器。

3.1 Docker 容器概述

Docker 提供隔离的用户控件,从而提供基于用户的进程、控件和文件系统。在后台,Docker 共享 Linux 主机内核。图 3-1 说明了 Docker 容器的工作机制:

图 3-1

Docker 有两个主要组件,采用客户端—服务器架构:

Docker Host。Docker Hub。

下面我们更详细地了解一下它们。

Docker Host:Docker Host 包含 Docker 守护进程、容器和映像。Docker 引擎是提供 Docker 核心技术的重要组件。这种核心技术实现了映像和容器。当我们成功安装 Docker,可以运行一条简单的命令。我们将考虑使用 CentOS 作为容器。使用 docker 命令 run -i -t /bin/bash,在 CentOS 映像中运行交互式命令行解释器:-i 标志启动交互式容器。-t 标志创建一个连接到 stdin 和 stdout 的伪终端。image 是一个 CentOS 映像。/bin/bash 启动命令行解释器。

运行这个命令时,系统将验证本地有无可用的 CentOS 映像。如果不可用,将从 Docker Hub -映像。

映像具有一个文件系统和可在运行时使用的参数,而容器是映像的一个有状态实例。很容易理解,容器是变化的,而映像是不变的。

Docker Hub:Docker Hub 是一个用于 Docker 容器共享和管理的软件即服务(SaaS)产品,是由 Docker 提供的集中注册表服务。作为用户,我们可以用它构建和交付应用程序。这使我们可以创建一个流水线,集成代码存储库,进行协作、映像发现和自动化。

3.2 理解虚拟机和容器之间的差别

在我们开始 Docker 安装和容器创建之前,理解容器的不同之处以及与虚拟机的差异是很有帮助的。

我们先来了解一下虚拟机和容器的根本差别。

3.2.1 虚拟机

在虚拟机(VM)中,我们必须安装一个操作系统和相关的设备驱动程序;因此虚拟机的空间占用或者规模是巨大的。安装 Tomcat 和 Java 的常规 VM 可能占据多达 10GB 的硬盘空间,如图 3-2 所示。

图 3-2

内存管理和设备驱动程序有一定的开销。虚拟机具备常规物理机器运营所需的所有组件。

在虚拟机中,虚拟化管理器(Hypervisor)抽象资源。它不仅包含应用程序,还有必要的二进制文件和程序库,以及整个客户操作系统,如 CentOS 6.7 和 Windows 2003。

云服务提供商使用虚拟化管理器为 VM 提供标准运行时环境。Hypervisors 分为 1 类和 2 类。

3.2.2 容器

容器共享主机的操作系统和设备驱动程序,并从映像中创建,安装了 Tomcat 的容器尺寸小于 500MB,如图 3-3 所示。

图 3-3

容器在规模上较小,因此能够有效地提供更快的速度和更好的性能。它们抽象操作系统。

容器作为相互隔离的用户空间运行。用户空间中的过程和文件系统在主操作系统上,与其他容器共享内核。容器最优秀的方面是共享和资源利用率,由于开销较小,可用资源也更多。容器工作所需的资源很少。

Docker 使不同环境之间的应用程序移植更高效、更简便。

3.5 小结

我们在本章中学到了如何在 Windows 10 中安装 Docker 容器,如何使用 Docker Hub 寻找公共领域中可用的镜像。

我们执行了「你好,世界」容器,验证 Docker 是否已经成功安装。验证 Docker 安装之后,我们使用 Docker hub 获取 Tomcat 映像,成功创建了一个 Tomcat 8 容器,并通过浏览器访问。

我们还使用 Jenkins 在 Tomcat 容器中部署了应用程序,目标是利用 docker 容器进行应用部署。

在下一章中,我们将介绍如何利用配置管理工具 Chef 设置运行时环境,以便在虚拟机中部署基于 Java 的 Web 应用。

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:nginx版本对比
下一篇:MySQl的内部存储代码
相关文章

 发表评论

暂时没有评论,来抢沙发吧~