一、容器技术概述 在正式开始docker的学习之前,我们需要先弄清楚一些基本问题,比如:容器技术究竟是什么? ibm developerworks网站对容器技术的描述如下:
虽然上面的描述很专业,但可能有些难以理解。别担心,我们先通过两个不使用容器技术的例子来理解:
从这两个例子中可以看出,由于依赖的外部环境不同,同样的代码可能会运行出不同的结果。为了解决这一问题,聪明的研发人员发明了容器技术。容器就像一个与外界相对隔离的沙盒。在容器中运行的应用可以获取到所需的所有资源,不会因为外部系统的不同而导致运行结果出现偏差。换句话说,容器具有可移植性、隔离性和一致性。通过容器,应用程序可以在几乎任何地方以相同的方式运行。
二、容器与虚拟机的对比 虚拟机(VM)是通过虚拟化技术创建的。借助虚拟化技术,用户可以在单个物理硬件系统上创建多个模拟环境或专用资源,并使用“Hypervisor”(虚拟机监控程序)直接连接硬件,从而将一个系统划分为不同的、独立且安全的环境,即虚拟机。 对于容器,我们可以将其视为一个轻量化、更小粒度的虚拟机。为了便于理解,我们可以不恰当地将它们的关系类比为进程和线程的关系。容器可以共享同一个操作系统内核,将容器内的应用进程与系统的其他部分隔离开来,同时占用的系统资源也更少。 下面是摘自Red Hat关于Linux容器博客中的一张图:
可以看到,传统的虚拟机运行N个不同的应用需要启动N个虚拟机,每个虚拟机都需要单独分配独占的内存、磁盘等资源。而使用容器技术,只需启动N个隔离程度较低的容器,并将应用放入容器中即可。 看到这里,可能有些同学担心安全性问题。在隔离性方面,传统的虚拟机提供的是相对封闭的隔离。那么容器是如何处理的呢?容器技术“聪明地”利用了Linux内核的多种防护技术来保证环境隔离中的安全性。
三、使用容器的优势 通过前面的学习,大家应该对为什么要使用容器有了一定的了解。其实原因很简单,容器技术具有优秀的可移植性,开发人员可以更快地部署和发布应用。 在云服务、云托管等云相关技术盛行的今天,容器技术让开发人员能够更快、更好、更稳健地将应用上云。通过类似集装箱式的移植方式,基本保证了每种服务都可以在所有部署环境中顺利运行,极大地提升了开发和运维的效率,降低了开发和运维的成本。
四、总结 本文作为系列的开篇科普文,简要介绍了容器技术的基本概念。具体的Docker学习将会在后续章节中展开。当然,系列更新不一定连续,也不一定固定,希望大家能学会自己学习,毕竟你已经是一个成熟的开发者了,哈哈哈。
参考资料 Linux 容器是什么?《Docker技术入门与实战》第三版
以上就是闲鱼Coder学Docker(一):什么是容器技术的详细内容,更多请关注php中文网其它相关文章!
Copyright 2014-2025 https://www.php.cn/ All Rights Reserved | php.cn | 湘ICP备2023035733号