目录

Docker

Docker 是一个开源的软件项目,用于容器化应用程序,解决了 “你那儿咋不好用?在我这儿好用啊!” 的 “人品” 问题。

Docker 简化并加速了应用程序的部署,因为包含所有必要软件包的容器镜像可以轻松传输和运行。

Docker, Inc. 是一家美国技术公司,开发围绕 Docker 构建的生产力工具,可自动在软件容器内部署代码。该公司的主要产品是 Docker Hub(容器的中央储存库)以及 Docker Desktop(用于在 Windows 和 Mac 上管理容器的 GUI 应用程序)。

什么是容器

译自 What is a Container

将软件打包成标准化的单元,用于开发、交付和部署

容器是一个标准的软件单元,它将代码及其所有的依赖项打包,以便应用程序在多个不同的计算环境中快速可靠地运行。Docker 容器镜像是一个轻量级的、独立的、可执行的软件包,包括运行一个应用程序所需的一切:代码、运行时、系统工具、系统库和设置。

容器镜像在运行时成为容器,在 Docker 容器的情况下——镜像在 Docker Engine 上运行时成为容器。容器化的软件既可用于基于 Linux 的应用程序,也可用于基于 Windows 的应用程序,无论基础设施如何,其运行方式总是一样的。容器将软件与其环境隔离开来,尽管在开发和暂存之间存在差异,也能确保它可以统一工作。

在 Docker Engine 上运行的 Docker 容器:

  • 标准:Docker 创建了容器的行业标准,因此它们可以在任何地方进行移植。
  • 轻量级:容器共享机器的操作系统内核,因此不需要每个应用都有一个操作系统,从而提高了服务器效率,降低了服务器和许可成本。
  • 安全:应用程序在容器中更安全,Docker 提供了业界最强的默认隔离能力。

Docker 容器无处不在:Linux、Windows、数据中心、云、无服务器等

Docker Today

Docker 容器技术是在 2013 年作为开源的 Docker Engine 推出的。

它利用了已有的围绕容器的计算概念,特别是在 Linux 世界中,被称为 cgroups 和 namespaces 的内核特性。Docker 的技术是独特的,因为它专注于开发人员和系统操作人员的要求,将应用程序的依赖性与基础设施分开。

在 Linux 世界的成功,推动了与微软的合作,将 Docker 容器及其功能引入 Windows 服务器。

Docker 及其开源项目 Moby 提供的技术,已经被所有主要的数据中心供应商和云计算供应商所采用。其中许多供应商正在利用 Docker 为他们的容器原生 IaaS 产品提供服务。此外,领先的开源无服务器框架也是利用 Docker 容器技术。

容器和虚拟机的比较

容器和虚拟机有类似的资源隔离和分配优势,但功能不同,因为容器虚拟化的是操作系统而不是硬件。容器的可移植性和效率更高。

容器

Containers

容器是应用层的一个抽象概念,它将代码和依赖关系打包在一起。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器在用户空间中作为隔离的进程运行。容器比虚拟机占用更少的空间(容器镜像通常只有几十 MB 大小),可以处理更多的应用程序,需要更少的虚拟机和操作系统。

虚拟机

Virtual Machines

虚拟机(VM)是物理硬件的一种抽象,将一台服务器变成许多服务器。管理程序允许在一台机器上运行多个虚拟机。每个虚拟机包括一个操作系统的完整副本、应用程序、必要的二进制文件和库——占用几十 GB 的空间。虚拟机的启动速度也可能很慢。

容器和虚拟机一起使用

容器和虚拟机一起使用,在部署和管理应用程序方面提供了很大的灵活性。

容器标准和行业领导地位

containerd logo

2013 年 Docker 的推出,通过使软件容器民主化,开启了一场应用开发的革命。Docker 开发了一种 Linux 容器技术,一种可移植的、灵活的、易于部署的技术。Docker 开源了 libcontainer,并与全球范围内的贡献者社区合作,以进一步推动其发展。2015 年 6 月,Docker 向开放容器倡议(OCI)捐赠了容器镜像规范和运行时代码,现在被称为 runc,以帮助在容器生态系统发展和成长的过程中建立标准化。

随着这一演变,Docker 继续通过 containerd 项目进行回馈,Docker 在 2017 年将该项目捐赠给了云原生计算基金会(CNCF)。 containerd 是一个行业标准的容器运行时,它利用 runc,并在创建时强调了简单性、稳健性和可移植性。containerd 是 Docker Engine 的核心容器运行时。