您的位置:首页 > 运维架构 > Docker

Docker优势——我们为什么选择Docker

2019-06-08 18:09 2586 查看

什么是容器?——标准化的软件单元

将软件打包成标准化单元,用于开发,装运和部署

容器是一个标准的软件单元,它将代码及其所有的依赖关系打包,以便应用程序从计算环境快速可靠地运行到另外一个计算环境。Docker容器映像是一个轻量级,独立地可执行软件包,包含运行应用程序所需地一切:代码,运行时,系统工具,系统库和设置。

容器映像在运行时成为容器,在Docker容器的情况下——映像在Docker Engine上运行时成为容器。适用于基于Linux和Windows的应用程序,无论基础架构如何,容器化软件都将始终运行相同。容器将软件与其环境隔离开来,并确保它可以统一运行,尽管开发和分段之间存在差异。

在Docker Engine上运行的Docker容器:

  • 标准: Docker创建了容器的行业标准,因此它们可以随处携带
  • 轻量级:容器共享机器的操作系统内核,因此不需要每个应用程序的操作系统,从而提高服务器效率并降低服务器和许可成本
  • 安全:应用程序在容器中更安全,Docker提供业界最强大的默认隔离功能

Docker引擎引发了容器化运动

Docker Engine是业界事实上的容器运行时,可在各种Linux(CentOSDebianFedoraOracle LinuxRHELSUSEUbuntu)和Windows Server操作系统上运行。Docker创建了简单的工具和通用打包方法,将所有应用程序依赖项捆绑在一个容器中,然后在Docker Engine上运行。Docker Engine使容器化应用程序能够在任何基础架构上一致地运行,为开发人员和运营团队解决“依赖性问题”,并消除“它在我的笔记本电脑上工作!”问题。

为何选择Docker Engine

详细信息:https://www.docker.com/products/container-runtime

  • 加速创新:Docker Engine构成了Docker Enterprise平台的基础,使开发人员和运营商能够快速,安全地将想法变为现实。
  • 选择自由:Docker Engine支持任何类型的应用程序 - 遗留到云原生,单片到12因子 - 并可与多个操作系统一起使用,跨混合/多云,并经过验证可与Kubernetes CRI配合使用。
  • 内在安全:Docker Engine在构建时考虑了安全性。借助Docker Content Trust和FIPS 140-2验证,Docker Engine用户可以在高度监管的环境中运行容器化应用程序。

主要特点和功能

  • 由containerd提供支持:基于领先的开源容器运行时,是云计算本地计算基金会(CNCF)的分级项目。Containerd实现了Kubernetes容器运行时接口(CRI),并在公共云和企业中广泛采用。
  • FIPS 140-2加密:NIST已对其加密验证的唯一容器运行时,为部署容器化应用程序形成安全且合规的基础。“安全设计”工程理念的一部分。
  • 强制签名图像:通过在部署之前强制执行适当的图像数字签名来验证容器的来源。阻止用户使用来自未知来源的容器图像或从未知来源的基础层构建容器图像。
  • 集成的BuildKit:BuildKit是一个开源工具,它从Dockerfile获取指令并“构建”Docker镜像。这个过程可能需要很长时间,因此BuildKit提供了一些体系结构增强功能,使其更快,更精确,更便携。
  • Docker CLI:与Docker容器交互的最流行方式是Docker CLI - 一个简单但功能强大的客户端,它通过一组清晰的命令极大地简化了管理容器实例的方式。
  • 认证插件:通过经过验证和认证的插件,将Docker Engine与您首选的网络,存储和日志记录工具集成在一起。插件架构将Docker Engine的功能扩展到第三方提供的工具。

容器和虚拟机比较

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

容器:容器是应用层的抽象,它将代码和依赖关系打包在一起。多个容器可以在同一台机器上运行,并与其他容器共享操作系统内核,每个容器在用户空间中作为独立进程运行。容器占用的空间比VM少(容器映像的大小通常为几十MB),可以处理更多的应用程序,并且需要更少的VM和操作系统。
虚拟机:虚拟机(VM)是物理硬件的抽象,将一台服务器转变为多台服务器。管理程序允许多台VM在单台机器上运行。每个VM都包含操作系统的完整副本,应用程序,必要的二进制文件和库 - 占用数十GB。虚拟机也可能很慢启动。

 

 

(adsbygoogle = window.adsbygoogle || []).push({});
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  Docker Containerd