目录
docker不是容器
首页 运维 Docker docker是容器吗

docker是容器吗

Jun 17, 2022 am 10:32 AM
docker

docker不是容器;容器是打包代码及其所有依赖的软件的标准单元,用于开发、交付和部署,使应用可以从一个环境快速可靠地运行到另一个环境,而docker则是容器技术的一种实现,是一个开源的应用容器引擎,是用来管理容器的。

docker是容器吗

本教程操作环境:linux7.3系统、docker19.03版、Dell G3电脑。

docker不是容器

Docker和容器的关系

现在一说到容器,第一时间就会想到Docker,但是容器并不等同于Docker,Docker只是容器技术的一种实现,用来管理容器,就像VMware是虚拟机的一种实现一样,除了Docker,还有LXC/LXD、rkt等容器技术实现,只是Docker最为出名。

什么是容器

Docker官方对容器的解释,一句话概括,容器(Container)就是将软件打包成标准化单元,以用于开发、交付和部署。容器是打包代码及其所有依赖的软件的标准单元,使应用可以从一个环境快速可靠地运行到另一个环境。容器镜像是轻量的、可执行的独立软件包 ,包含软件运行所需的所有内容:代码、运行时环境、系统工具、系统库和设置。容器化软件适用于基于Linux和Windows的应用,在任何环境中都能够始终如一地运行。容器赋予了软件独立性,将其与环境隔离开来,确保在例如开发和预演环境这种存在差异的环境中统一地运行。

容器也是一种用于打包应用(已编译)代码以及运行时所需依赖的技术。运行的每个容器可以重复,通过包含依赖项实现标准化意味着在任何环境运行容器都可以得到相同的行为。容器将应用与主机基础结构分离,使其在不同的云和操作系统环境部署更加容易。容器是不可变的,无法更改已运行容器的代码。如果一个容器化应用需要更改,则需要构建一个包含更改的新容器,从更新的镜像从新创建容器。

容器技术实质上是对系统资源的隔离和控制,使容器进程运行于属于自己的独立的命名空间(namespace)。容器可以拥有自己的文件系统、网络配置、进程空间等,容器内的进程是运行在一个隔离的环境里,使用起来就好像是在一个独立于宿主的系统下操作一样,也使得容器可以很方便的在任何地方运行。

容器的优点

容器的主要优点概括如下:

  • 使用简单高效:与虚拟机镜像相比,容器镜像更易用、更高效。容器体积小启动快,不需要与外部的基础架构环境绑定,完美解决从开发到生产环境的一致性问题。

  • 监测与管理:容器比虚拟机更加透明,有助于监测与管理。尤其是容器进程的生命周期由基础设施管理,而不是被进程管理器隐藏在容器内部。最后,每个应用程序用容器封装,管理容器部署就等同于管理应用程序部署。

  • 持续集成和部署:容器消除环境差异,保证应用生命周期环境一致性和标准化。开发人员使用镜像实现标准开发环境构建,开发完成后封装完整环境和应用镜像,测试运维人员可以直接部署镜像进行测试和发布,简化了持续集成、测试和发布过程。

  • 环境标准化与版本控制:基于容器提供的环境一致性和标准化,可以对容器镜像进行版本控制,即能够对整个运行环境进行版本控制,提供可靠与频繁的容器镜像构建、部署和快速简便的回滚。

  • 资源高效利用与隔离:容器没有管理程序的额外开销,与底层共享操作系统,性能优良,系统负载低,在相同条件可以运行更多应用实例,可以充分利用系统资源。容器还拥有不错的资源隔离与控制能力,可以精确地分配系统资源,保证应用之间互不影响。

  • 可观测:不仅显示操作系统的信息和度量,还显示应用自身的信息和度量。

  • 云和操作系统分发可移植性:可运行在Ubuntu、RHEL、 CoreOS、物理机、GKE以及其他任何地方。

  • 以应用为中心:从传统的硬件上部署操作系统提升到操作系统中部署应用程序。

  • 松耦合、分布式、弹性伸缩和微服务:应用程序被分成更小,更独立的模块,并可以动态管理和部署,而不是运行在专用设备上的大型单体程序。

什么是Docker

Docker毫无疑问是从众多容器技术中脱颖而出的佼佼者,至于Docker具体是什么,通过下面几点总结:

Docker是一个开源容器项目,代码在GitHub维护,遵循Apache 2.0协议并已加入Linux基金会,受到主流操作系统以及云服务提供商支持,成立推动了开放容器联盟(OCI)。

Docker使用Google公司的Go语言进行开发实现,基于Linux内核的命名空间(namespace) 、控制组(cgroup)以及OverlayFS类的Union FS等技术,对进程进行封装隔离,属于操作系统层面的虚拟化技术。由于隔离的进程独立于宿主和其它的隔离的进程,因此也称其为容器。

Docker最初是基于Linux容器(LXC)实现,后来使用自己开发的libcontainer替代了LXC,然后进一步演化为使用runc和containerd。

Docker提供了高效、敏捷和轻量级的容器方案,可在容器内快速自动化部署应用,通过操作系统内核技术为容器提供资源隔离与安全保障,极大地简化了容器创建与维护,并支持部署到本地环境和多种云平台。换句话说,Docker为应用开发、运行和部署提供了一站式解决方案。

runc是一个Linux命令行工具,用于根据OCI容器运行时规范创建和运行容器。

containerd是一个守护程序,它管理容器生命周期,提供了在一个节点上执行容器和管理镜像的最小功能集。

Docker的优势

作为一种新兴的虚拟化方式,Docker跟传统的虚拟化方式相比具有众多的优势。具体总结如下:

  • 更高效的利用系统资源:容器不需要进行硬件虚拟以及运行完整操作系统等额外开销,Docker对系统资源的利用率更高,需求量更小,可以实现更高的性能。一个相同配置的主机,使用容器可以比虚拟机运行更多数量的应用。

  • 更快速的启动时间:Docker容器应用可以做到秒级、甚至毫秒级的启动时间。大大的节约了开发、测试、部署的时间。

  • 一致的运行环境:Docker镜像提供了除内核外完整的运行时环境,确保了应用运行环境一致性,从而不会再出现同样的代码换个环境就无法运行这类问题。

  • 持续交付和部署:使用Docker可以通过定制应用镜像来实现持续集成、持续交付、部署。开发人员通过Dockerfile构建镜像并结合持续集成系统进行集成测试,运维人员可以直接在生产环境中快速部署该镜像,甚至结合持续部署系统进行自动部署。

  • 更轻松的迁移:Docker确保了执行环境的一致性,使得应用在不同平台之间的迁移更加容易,而不用担心运行环境的变化导致应用无法正常运行的情况。

  • 更轻松的维护和扩展:Docker使用的分层存储以及镜像的技术,使得应用重复部分的复用更为容易,也使得应用的维护更新更加简单,基于基础镜像进一步扩展镜像也变得非常简单。Docker还维护了一大批高质量官方镜像,进一步降低了应用服务的镜像制作成本。

  • 良好的隔离性:Docker为容器提供了可靠的资源隔离与安全保障,使容器精确地分配系统资源,保证应用之间互不影响。

  • 弹性伸缩:善于处理集中爆发的服务器使用压力,动态的管理应用。

推荐学习:《docker视频教程

以上是docker是容器吗的详细内容。更多信息请关注PHP中文网其他相关文章!

本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前 By 尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前 By 尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
3 周前 By 尊渡假赌尊渡假赌尊渡假赌

热工具

记事本++7.3.1

记事本++7.3.1

好用且免费的代码编辑器

SublimeText3汉化版

SublimeText3汉化版

中文版,非常好用

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具

SublimeText3 Mac版

SublimeText3 Mac版

神级代码编辑软件(SublimeText3)

pycharm如何将project打包 pycharm如何将project打包 Apr 25, 2024 am 03:54 AM

在 PyCharm 中打包项目有四种方法:打包为单独的可执行文件:导出为 EXE 单文件格式。打包为安装程序:生成 Setuptools Makefile 并构建。打包为 Docker 镜像:指定镜像名称、调整构建选项并构建。打包为容器:指定构建的镜像、调整运行时选项并启动容器。

Pi Node教学:什么是Pi节点?如何安装和设定Pi Node? Pi Node教学:什么是Pi节点?如何安装和设定Pi Node? Mar 05, 2025 pm 05:57 PM

PiNetwork节点详解及安装指南本文将详细介绍PiNetwork生态系统中的关键角色——Pi节点,并提供安装和配置的完整步骤。Pi节点在PiNetwork区块链测试网推出后,成为众多先锋积极参与测试的重要环节,为即将到来的主网发布做准备。如果您还不了解PiNetwork,请参考Pi币是什么?上市价格多少?Pi用途、挖矿及安全性分析。什么是PiNetwork?PiNetwork项目始于2019年,拥有其专属加密货币Pi币。该项目旨在创建一个人人可参与

PHP 微服务容器化的敏捷开发与运维 PHP 微服务容器化的敏捷开发与运维 May 08, 2024 pm 02:21 PM

答案:PHP微服务采用HelmCharts部署进行敏捷开发,并使用DockerContainer容器化以实现隔离和可扩展性。详细描述:使用HelmCharts自动部署PHP微服务,实现敏捷开发。Docker镜像允许对微服务进行快速迭代和版本控制。DockerContainer标准隔离微服务,而Kubernetes负责管理容器的可用性和可扩展性。利用Prometheus和Grafana监控微服务性能和健康状况,并创建告警和自动修复机制。

golang程序怎么启动 golang程序怎么启动 Apr 21, 2024 am 12:47 AM

有四种启动 Go 程序的方法:使用命令行:go run main.go通过 IDE 的“Run”或“Debug”菜单启动使用容器编排工具(如 Docker 或 Kubernetes)启动容器在 Unix 系统上使用 systemd 或 supervisor 作为系统服务运行

Docker三分钟搞定LLama3开源大模型本地部署 Docker三分钟搞定LLama3开源大模型本地部署 Apr 26, 2024 am 10:19 AM

概述LLaMA-3(LargeLanguageModelMetaAI3)是由Meta公司开发的大型开源生成式人工智能模型。它在模型结构上与前一代LLaMA-2相比没有大的变动。LLaMA-3模型分为不同规模的版本,包括小型、中型和大型,以适应不同的应用需求和计算资源。小型模型参参数规模为8B,中型模型参参数规模为70B,而大型模型参参数规模则达到400B。然而在训练中,目标是实现多模态、多语言的功能,预计结果将与GPT4/GPT4V相当。安装OllamaOllama是一个开源的大型语言模型(LL

deepseek怎么安装 deepseek怎么安装 Feb 19, 2025 pm 05:48 PM

DeepSeek的安装方法有多种,包括:从源码编译(适用于经验丰富的开发者)使用预编译包(适用于Windows用户)使用Docker容器(最便捷,无需担心兼容性)无论选择哪种方法,请仔细阅读官方文档并充分准备,避免不必要的麻烦。

PHP 分布式系统架构与实践 PHP 分布式系统架构与实践 May 04, 2024 am 10:33 AM

PHP分布式系统架构通过将不同组件分布在网络互联的机器上实现可伸缩性、性能和容错性。该架构包括应用服务器、消息队列、数据库、缓存和负载均衡器。将PHP应用迁移到分布式架构的步骤包括:识别服务边界选择消息队列系统采用微服务框架部署到容器管理服务发现

如何通过容器化来优化 Java 函数的性能? 如何通过容器化来优化 Java 函数的性能? Apr 29, 2024 pm 03:09 PM

容器化通过以下方式提升Java函数性能:资源隔离-确保隔离的计算环境,避免资源争用。轻量级-占用较少系统资源,提高运行时性能。快速启动-减少函数执行延迟。一致性-解耦应用程序和基础设施,保证跨环境一致的行为。

See all articles