前言
在此Docker教程中,你将学习如何创建HelixQAC并将其作为容器化镜像运行。
Docker的基本定义是一种开源和流行的操作系统级虚拟化(通常称为“容器化”)技术,它是轻量级的,可移植的,并且主要在Linux和Windows上运行。Docker使使用容器创建、部署和运行应用程序变得更加容易。
从根本上说,容器只是一个正在运行的进程,并应用了一些附加的封装功能。借助容器,开发人员(和DevOps管理员)可以将应用程序与运行应用程序所需的一切(包括代码、运行时、库、配置的环境变量和配置文件)打包在一起,并将其全部作为一个包提供。
还值得一提的是,Docker可以立即启动,并具有用于版本控制和组件可重用的内置机制。这些Docker容器可以通过公共Docker中心或私有存储库共享,从而使其易于访问和使用。
以下是Docker的一些最显著的优势:
快速部署:Docker可以为每个进程创建一个容器,然后可以根据需要快速启动和删除该容器,而无需启动平台操作系统(OS)。这将部署过程时间缩短到几秒钟此外,Docker镜像启动几乎是实时响应的。
可移植性:Docker允许将经过测试的容器化应用程序部署到运行Docker的任何其他系统,并确保其执行方式与您测试时完全相同。Docker镜像可以与其他团队共享。
性能:尽管虚拟机(VM)是容器的替代方法,但VM具有操作系统,而Docker容器则没有。这意味着容器的占用空间比VM小,创建速度更快,并且启动和删除时间更快。
持续集成效率:Docker使你能够构建容器镜像,并在从开发、测试到部署的每个步骤中使用它。此外,您还可以分离不相关的步骤并且并行地运行它们,从而缩短从生成阶段到生产部署阶段所需的时间。这减少了设置环境和调试特定于环境的问题的时间,使它们更可靠,更易于维护。
但是,Docker存在一些限制,尽管它们对Docker静态分析器的设置的影响很小甚至为零,但了解这些限制对您来说仍然很重要。
Docker不能替代虚拟机:许多在VM中运行的应用都可以移动到容器中,但这并不意味着它们都可以或应该移动到容器中。例如:具有严格法规要求的行业可能无法将容器交换为VM,因为VM比容器提供更多的隔离。
容器中的数据:有时容器确实会出现故障,在这种情况下,它需要备份和恢复策略。虽然有几种解决方案,但没有一个是自动化的或者尚不可扩展的。另一个限制是,除非您在容器关闭之前先将其保存在某个位置,否则当它关闭时,其中的所有数据都会永远消失。
跨平台兼容性:如果应用程序被设计为在特定平台(如WindowsOS平台或Linux)上的Docker容器中运行,这是一个主要问题,因为它无法在任何其他平台上运行。但是,虚拟机不受此限制的约束,因此该限制使Docker对一些由Windows和Linux服务器组成的高度异构环境的吸引力降低。
使用图形界面运行应用程序:通常,Docker设计用于托管在命令行上运行的应用程序。虽然我们有几种方法(如使用X11转发或MobaXterm)可以在Docker容器内运行图形界面,但这些过程很笨拙。因此,我们可以说Docker对于需要丰富接口的应用程序来说不是一个好的解决方案。
为了帮助将静态分析工具设置为Docker并解决这些限制,我将把设置分解为三个简单的部分。
一个适合入门者学习的网站是