CodeGym /课程 /Docker SELF /Docker: 起源历史和主要概念

Docker: 起源历史和主要概念

Docker SELF
第 9 级 , 课程 0
可用

1.1 Docker 的出现历史

早期发展和背景:

Docker 的故事远在 2013 年正式推出之前就开始了。在 2000 年代早期,虚拟化技术已经很流行,但是传统的虚拟机需要大量资源且不够灵活。在那个时候,容器化的想法逐渐酝酿。LXC (Linux Containers) 成为了第一个允许通过 Linux 内核功能运行隔离容器的项目之一。

想法的诞生:

Docker 起源于 dotCloud 公司内部的一个项目,该公司由 Solomon Hykes 和 Sebastián Pulis 在 2010 年创立。DotCloud 提供 PaaS(平台即服务),为开发者提供部署和管理 web 应用的工具。然而,团队在开发 dotCloud 时,发现了应用隔离和依赖管理的难题。于是,一个可以解决这些问题的通用容器技术的想法便诞生了。

开发和首次发布:

Docker 的早期版本实际上源自于 dotCloud,它的“正式父亲”是 Solomon Hykes。Docker 首次于 2013 年 3 月的 PyCon 会议上宣布,随后其源码被上传至 GitHub。一开始 Docker 使用的是 LXC (Linux Containers),但后来团队开发了自己的容器实现,从而提升了系统性能和灵活性。

认可和社区成长:

Docker 很快就吸引了开发者和 IT 专业人士的关注。这一点也不奇怪:它设置简单,却功能强大。在宣布后几个月内,项目便在 GitHub 上得到了大量 star,并吸引了一批活跃的贡献者社区。在 2014 年 dotCloud 公司更名为 Docker, Inc.,将重点放在新的容器平台的开发上。

Docker 历史中的一个关键事件是它得到了 IT 市场上的大公司认可。2014 年,Red Hat、Google 和 Microsoft 开始主动支持 Docker,将其集成到自己的产品和服务中。这推动了 Docker 的快速传播并确立其作为容器化 事实标准 的地位。

合作伙伴关系和生态系统:

Docker 继续发展并吸引了投资。在 2014 年,公司在 C 轮融资中获得了 4000 万美元(C 轮融资是初创公司或已经取得一定成功并希望进一步发展的公司第三阶段风险融资),这使得团队得以扩展加速开发。Docker 开始与其他公司积极合作,围绕自己的平台建立生态系统。还启动了 Docker Compose(用于管理多容器应用) 和 Docker Swarm(用于容器编排)等项目。

在 2015 年,Docker 宣布与 Microsoft 达成战略合作,这使得 Docker 能够集成到 Windows Server 和 Azure 中。这是将容器技术从 Linux 社区推广至更广泛受众的重要一步。

竞争与标准化:

随着 Docker 的流行,市场上出现了竞争性项目和技术。2015 年,Google 推出了 Kubernetes——一个容器编排系统,因其灵活性和功能性迅速流行开来。尽管存在竞争,Docker 和 Kubernetes 相辅相成,成为现代容器基础设施的基础。

2017 年,Docker 开始支持 Open Container Initiative (OCI)——一个旨在标准化容器格式和运行时的项目。这确保了不同容器平台之间的兼容性,并简化了 Docker 与其他工具的集成。

当前状态和未来:

如今 Docker 仍然是开发者和系统管理员 不可或缺的工具。它的生态系统继续发展,包括 Docker Desktop(用于本地机器上的 Docker)和 Docker Hub(公共镜像仓库)。

Docker 积极改进安全性、性能和易用性方面的技术。例如,Docker Content Trust 确保镜像的完整性和真实性,而 Docker Scan 可检测容器中的漏洞。

1.2 Docker的主要概念

0. 虚拟的“虚拟机”

对于运行在Docker容器内的应用而言,Docker容器就是一个虚拟机。但不同于普通的虚拟机,Docker是一个非常轻量级的系统。因为实际上它并不是一个完整的虚拟机,而是虚拟的“虚拟机”

Linux操作系统能够将应用程序隔离到如此程度,让每个应用像是运行在自己的操作系统中一样。运行在实际操作系统之上的这种独特环境,就是容器。

1. 隔离:

Docker的一个关键特性就是能够为应用程序及其依赖提供隔离。这是通过Linux内核中的namespaces和cgroups实现的。Namespaces提供了进程的隔离:每个容器都有自己的一组进程、网络接口和文件系统。Cgroups允许限制和控制每个容器对资源(CPU、内存和磁盘)的使用。这种隔离使容器独立于其他容器和主机系统,从而提升了应用程序的安全性和可靠性。

2. 可移植性:

Docker提供了应用程序的高度可移植性。这意味着同一个容器可以在任何服务器上运行:开发者的本地计算机、测试环境或云平台。整个运行环境,包括应用代码、依赖关系、库和配置文件都被打包进容器。这避免了环境不兼容的问题,并让开发者确信他们的应用程序会在任何环境下运行而不需要修改。

3. 轻量化:

不同于每个实例都需要安装单独操作系统的虚拟机,Docker容器使用的是主机系统的内核。这使得容器变得更加轻便,启动速度更快。它们占用更少的磁盘空间和内存资源,因此可以在单台服务器上运行更多容器,而不是虚拟机。

4. Docker镜像:

Docker镜像是用于创建容器的模板。镜像包含了应用程序运行所需的一切:代码、库、依赖关系和配置文件。可以通过Dockerfile这个专门的脚本从零开始创建镜像,该脚本描述了创建镜像的步骤。此外,在Docker Hub(一个公开的Docker镜像仓库)上还有许多现成的镜像。Docker Hub允许开发者共享自己的镜像,并使用其他人创建的镜像。

5. 分层文件系统:

Docker使用分层文件系统(Union File System),它可以节省空间和资源。每个镜像由多个层组成,每层代表与前一层相比的更改。例如,一个层可能包含基础操作系统,另一个层包含已安装的库,而第三个层包含应用程序代码。从镜像创建容器时会添加一个新的写入层,而不会影响原始层。这减少了网络数据传输量,并加速了容器创建过程。

6. 自动化和编排:

Docker支持通过多种工具实现应用程序的构建、测试和部署自动化。Docker Compose用于管理多容器应用。通过它可以在一个文件(docker-compose.yml)中描述所有服务,并使用一条命令启动它们。在大规模集群中,Kubernetes是用于容器编排的系统,它提供了自动扩展、故障恢复和负载均衡。

1.3 Docker 的应用

Docker 在 IT 各个领域都被广泛使用。让我们来看看主要的应用方向:

1. 开发和测试:

开发者使用 Docker 创建隔离的开发和测试环境。这可以让不同版本的库和框架共存而不会冲突。测试人员可以快速搭建环境以进行自动化测试。

2. 持续集成和部署 (CI/CD):

Docker 简化了持续集成和部署的流程。通过它可以创建应用的镜像,并在每个构建阶段进行测试,从而使部署过程更加可靠和可预测。

3. 微服务:

Docker 是微服务架构的理想解决方案。通过这种架构,应用程序被分成小的独立服务,每个服务都可以单独部署和扩展。

4. 云计算:

Docker 通过统一的组件打包格式简化了应用程序在云端的部署。这样可以轻松地在不同云平台和本地服务器之间迁移应用程序。

Docker 的历史就是一个创新与合作的故事,它改变了 IT 行业。从一个小型初创公司的内部项目开始,Docker 已经变成了一个全球现象,不断影响着世界范围内的应用开发和部署。这个历程展示了一个通过坚持和明确愿景落实的创意是如何改变整个行业的。

评论
TO VIEW ALL COMMENTS OR TO MAKE A COMMENT,
GO TO FULL VERSION