什么是 Docker、容器、虚拟机和容器化?

什么是 Docker、容器、虚拟机和容器化?
最新回答
一心只容一人

2022-03-23 06:01:58

什么是 Docker、容器、虚拟机和容器化?

容器化

容器化是将软件代码与其所有库、框架和其他依赖项捆绑在一起的过程,以便可以将其作为单个实体打包和运输。容器内的软件或应用程序可以在任何基础设施的任何环境中移动和一致运行,无论是本地还是云,它独立于该环境或基础设施的操作系统。容器基本上是一个功能齐全、可移植的计算环境。

在容器出现之前,当应用程序被运送到另一个平台或操作系统时,会出现兼容性问题,从而导致需要修复的错误、错误和故障,这会耗费大量时间并降低生产力。而将应用程序打包在可以跨平台和基础设施移动的容器中,该应用程序可以在任何移动的地方使用,因为它拥有在其中成功运行所需的一切。

容器与虚拟机

容器和虚拟机是非常相似的资源虚拟化技术。虚拟化是一个系统的单一资源(如 RAM、CPU、磁盘或网络)可以“虚拟化”并表示为多个资源的过程。

容器和虚拟机之间的主要区别在于,虚拟机将整个机器虚拟化到硬件层,而容器仅虚拟化操作系统级别之上的软件层。虚拟机通过在物理服务器上运行软件来模拟特定的硬件系统,每个虚拟机内都运行一个独特的操作系统,并且每个虚拟机都有自己的二进制文件、库和它所服务的应用程序,虚拟机的大小可能有很多千兆字节。而容器位于物理服务器及其主机操作系统(例如 Linux 或 Windows)之上,每个容器共享主机操作系统内核,通常还共享二进制文件和库,这些共享组件是只读的。因此,容器非常“轻”,它们的大小只有几兆字节,只需几秒钟即可启动,而虚拟机则需要数千兆字节和几分钟的时间。此外,容器还减少了管理开销,由于它们共享共同的操作系统,因此只有一个操作系统需要维护。

Docker

Docker 是一个用于开发、发布和运行应用程序的开放平台。Docker 的理念是“Build Once,Run Anywhere”(构建一次,到处运行),它使您能够将应用程序与基础设施分离,以便您可以快速交付软件。借助 Docker,您可以像管理应用程序一样管理您的基础设施。通过利用 Docker 的方法来快速交付、测试和部署代码,您可以显著减少编写代码和在生产中运行代码之间的延迟。

Docker 使用 GO 语言编写,并利用 Linux 内核的多个特性来提供其功能。Docker 使用称为命名空间的技术来提供称为容器的隔离工作空间。当您运行容器时,Docker 会为该容器创建一组命名空间,这些命名空间提供一层隔离,容器的每个方面都在单独的命名空间中运行,并且其访问仅限于该命名空间。

Docker 的架构基于客户端-服务器模型,Docker 客户端与 Docker 守护进程通信,后者负责构建、运行和分发 Docker 容器的繁重工作。Docker 客户端和守护进程可以在同一系统上运行,也可以将 Docker 客户端连接到远程 Docker 守护进程。Docker 客户端和守护进程使用 REST API 通过 UNIX 套接字或网络接口进行通信。

Docker 的主要组件包括:

  • Docker 守护进程:侦听 Docker API 请求并管理 Docker 对象,例如映像、容器、网络和卷。
  • Docker 客户端:是许多 Docker 用户与 Docker 交互的主要方式,当您使用诸如 docker run 之类的命令时,客户端会将这些命令发送到 dockerd,由后者执行这些命令。
  • Docker Desktop:适用于 Mac 或 Windows 环境的易于安装的应用程序,使您能够构建和共享容器化应用程序和微服务。
  • Docker 注册表:存储 Docker 镜像,Docker Hub 是任何人都可以使用的公共注册表,Docker 默认配置为在 Docker Hub 上查找映像。

Docker 对象包括镜像、容器、网络、卷等,其中:

  • Docker 镜像:是一个只读模板,包含创建 Docker 容器的说明。
  • Docker 容器:是镜像的可运行实例,您可以使用 Docker API 或 CLI 创建、启动、停止、移动或删除容器。

总之,容器化是一种将软件代码及其依赖项打包为单个实体的方法,而 Docker 是实现容器化的最著名平台之一。虚拟机则是将整个机器虚拟化到硬件层的技术,与容器相比更加笨重。通过理解和使用这些技术,开发人员可以构建更加可移植、可扩展和可靠的应用程序。