当前位置:首页 > 容器技术 > 正文

什么叫容器技术


一、怎么用通俗易懂的话来解释Docker(容器)技术官网上的介绍如下:
Dockerisanopenplatformfordevelopersandsysadminstobuild,ship,andrundistributedapplications....
其实看完这句话我还是不明白是什么,所以我慢慢解释一下以下。但总而言之,将其想象为以新方式实现的超轻量级虚拟机通常是正确的。当然,实现原理和应用与VM还是有很大不同的,专业名称是应用容器(ApplicationContainer)。
为什么要使用容器?
那么应用程序容器是什么样子一个完整的应用程序容器看起来就像一个安装了一组特定应用程序的虚拟机?例如,如果我现在想使用MySQL,我会找到一个安装了MySQL的容器并运行它。然后我就可以使用MySQL了。
为什么我不直接安装MySQL为什么我需要这么奇怪的容器概念?也就是说,如果你真的要安装MySQL,你可能需要安装一些依赖库,并根据你的平台和操作系统版本进行配置,有时你需要从源代码编译并报告一堆莫名其妙的错误。没那么容易索赔。如果您的设备崩溃,一切都必须重新启动,并且您可能必须重做设置。但是有了容器,你就相当于拥有了一个可以运行的虚拟机,只要你能运行容器,MySQL的配置就会被保留。一旦您想更换汽车,只需将容器取出并放入另一辆车即可。无需考虑硬件、操作系统、运行环境等。
在公司的一个很大用处就是保证线下开发环境、测试环境、线上生产环境稳定。我当时经常遇到百度,当开发人员准备测试东西时,他们通常会得到一段代码和一张介绍上线步骤的概述表。结果代码在测试机上无法执行,开发人员就跑去找问题。我发现一个bug并在开发团队查看时报告了它,为什么我忘记在在线订单中重新输入该命令?上线的时候,你的软件版本和我电脑上的不一样,也会出现类似的情况……我在亚马逊的时候,一个开发人员直接担任以上三个职位,有自动化部署机制,问题会少一些,但大家还是不敢上网。
如果使用容器,那就直接在容器中开发。通过容器,整个开发、测试和生产环境都可以保持高度稳定。
此外,容器也像虚拟机一样具有一定程度的隔离性。
二、容器与虚拟机的区别1.容器技术简介
对于容器来说,主要是一个相对独立的驱动环境。从这一点来说,它有点类似于虚拟机,但又不像虚拟机那么彻底。在容器内,它对外界的影响应该最小化。例如,并非主机上的所有资源都可以在容器中消耗。
2.容器和虚拟机的区别
容器和虚拟机的主要区别在于虚拟化层的放置以及操作系统资源的使用方式。
1
1
容器和虚拟机具有相似的使命:隔离应用程序及其依赖项,以构建可以在任何地方运行的独立实体。此外,容器和虚拟机还消除了对物理硬件的需求,使我们能够更有效地使用计算资源,从而提高能源效率和成本效益。
虚拟机将虚拟硬件、内核(即操作系统)和用户空间打包成一个新的虚拟机。虚拟机可以使用“管理程序”在物理设备上运行。虚拟机依赖于虚拟机管理程序虚拟机管理程序通常安装在“裸机”系统硬件上,使得虚拟机管理程序在某些方面被视为操作系统。一旦安装了虚拟机管理程序,就可以从系统的可用计算资源中分配虚拟机实例,每个虚拟机都被赋予唯一的操作系统和工作负载(应用程序)。简而言之,虚拟机首先要虚拟出一个物理环境,然后构建一个完整的操作系统,然后构建一个运行时层供应用程序运行。
对于容器环境,不需要安装主机操作系统。容器层(例如LXC或libcontainer)直接安装在主机操作系统(通常是Linux变体)上。安装容器层后,可以从系统可用的计算资源中分配容器实例,并在容器中部署企业应用程序。但是,每个容器化应用程序将共享相同的操作系统(单个主机操作系统)。容器可以被认为是安装了一组特定应用程序的虚拟机。它直接使用主机的内核。它比虚拟机具有更少的抽象层、更轻并且启动速度极快。
与虚拟机相比,容器具有更高的资源利用效率,因为不需要为每个应用程序分配单独的操作系统——实例规模更小,创建和迁移速度也更快。快速地。这意味着单个操作系统可以承载比虚拟机更多的容器。云提供商非常热衷于容器技术,因为可以在相同的硬件设备上部署更多数量的容器实例。此外,容器很容易迁移,但只能迁移到具有兼容操作系统内核的其他服务器,从而限制了迁移选项。
由于容器不像虚拟机那样封装内核或虚拟硬件,因此每组容器都有自己独立的用户空间,允许多组容器运行在同一个主机系统上。我们可以看到,所有操作系统级别的架构都可以跨容器共享,唯一需要独立构建的就是二进制文件和库。正因为如此,容器具有极轻的特性。
接触过Docker的人应该都看过下图。无需进一步解释。Docker降低了GuestOS的级别,因此更轻且具有更高的性能。
docker虚拟机之间的差异
3深层差异:
docker虚拟机之间的差异
更新:Docker现在支持windows.因此,上面的Windows支持栏可以忽略。
三、k8s和docker区别是什么?

Kubernetes(k8s)是Google的开源容器集群管理系统(Google内部:Borg)。它主要用于容器编排,以启动容器、自动化部署、开发和管理容器应用程序以及回收容器。k8s的目标是让容器化应用的部署变得简单高效。K8s提供了一种部署、调度、更新和维护应用程序的机制。

当使用Kubernetes管理Docker集群时,可以将Docker视为Kubernetes中使用的底层组件;而且,Kubernetes不仅支持Docker,还支持Rocket,这是另一种容器技术。

详细信息:

从根本上讲,Kubernetes是一个由Google和RedHat联合运营的开源“容器编排”项目。它来自谷歌公司。博格系统。

因此,其在管理超大规模集群方面的体验明显优于其他容器编排技术。再加上Kubernetes在社区管理方面的民主化,很快就击败了Docker推出的容器编排解决方案。(Compose+Swarm)已经成为容器编排事实上的标准。

从功能上讲,Kubernetes是一个用于构建分布式、基于容器的系统的完整基础设施环境。它不仅可以拉取基本的用户镜像和运行容器,还可以提供路由网关和水平扩展、监控、备份和灾难管理。恢复和一套运维能力。