云计算的发展越来越迅速,而虚拟化则是云计算的重要基础。而而Docker作为虚拟化的重要手段之一,定义了一套容器从构建到执行的标准化体系,改变了传统的虚拟化技术,深度影响了云计算领域。
什么是docker
Docker是一种通过容器使得创建、部署和运行应用程序更加简单的工具。通过容器,开发者们可以将应用程序所需要的库和依赖文件打包在一起,实现所需要的资源隔离。从而可以将应用程序部署到任意的机器上面,而不用担心不同机器之间的环境配置不同而引起错误。Docker就像是码头上的集装箱一样,不同的货物通过不同的集装箱运载,避免引起混乱。而Docker的“货物”就是应用程序,通过容器的隔离,不但消除了程序之间存在的可能影响,并且实现了从打包到应用的快速部署。从某种程度上来说,Docker有一点想虚拟机,但是又和虚拟机有所不同。Docker的启动速度更快,资源占用更少,在一台物理机上,可以同时运行几十、甚至上百个容器。
和VM的异同
虚拟机和容器的作用都是消除了对硬件资源的需求,通过某种方式将应用程序运行时所需要的依赖打包成一个独立的单元,从而实现程序更好的可移植性。但是二者在实现的方式上是不同的,所谓是殊途同归。
VM.png
虚拟机属于操作系统级别的资源隔离,资源隔离的更加彻底一些。如上图所示,每一个新的虚拟机打包的内容包括虚拟硬件、操作系统和用户空间。因此虚拟机的启动速度相对来说会慢一些。但Docker的具体做法如下图所示:
Docker.png
如上图所示,Docker对于上层的应用程序打包的内容仅包括用户空间,并且不会将内核系统和硬件程序打包在内,所以相比虚拟机而言,容器的操作方式更加轻量一些。对于物理机、虚拟机和Docker,如果说将物理机看做一个独立的大别墅的话,那么虚拟机就像是高层中每一层的楼房,每一个户型都是有独立的,有自己独立的空间,而容器就像是学校里面的宿舍,每一个宿舍都是独立的,但是洗漱间、淋浴间之类的资源属于共享资源。
Docker的优势
容器并不是一个新鲜的概念,谷歌很久之前就在使用自己的容器技术了。其他的容器技术例如Solaris Zones,BSD jails,和LXC都是很早就有的技术,那么相比其他容器技术而言,Docker的优势在哪里呢?
- 易用性:Docker的产生对于使开发者、系统管理员和架构师都可以在他们的电脑上轻而易举的打包他们的程序,并且可以运行在任何的公有云、私有云和其他的机器上面。真正的实现了“一次打包,随处运行”。
- 速度快:Docker更加轻量,所以运行速度也更快。一般情况下Docker的启动速度是秒级的,相比VM要虚拟出一个完整的操作系统而言,速度要快的多。
- Docker Hub:Docker Hub是Docker的镜像仓库,当然你可以可以搭建自己的镜像仓库。Docker Hub上官方提供了非常多可使用的镜像,用户可以在上面非常方便的找到自己需要的服务,对于开发人员来说是非常方便和友好的。
- 模块化和可扩展性:Docker可以很容易的将你的应用程序分割成独立的容器。也就是将应用程序进行模块化,并且各个模块之间可以非常方便的进行组合与沟通。另外,对于应用程序而言,对不同的模块进行升级也是容易的,只需要独立更新相应的模块容器即可,无需对整个应用程序进行更改。
总结
只是从整体的角度上对Docker技术进行了一些简单介绍,对于Docker而言,具体是怎么操作的,可以用Docker做哪些事情,以及在我们的AI平台上,是怎么使用Docker来提供服务的,之后会有更多的介绍。
参考文章:
[1]What is Docker? https://opensource.com/resources/what-docker
[2]A Beginner-Friendly Introduction to Containers, VMs and Docker.https://medium.freecodecamp.org/a-beginner-friendly-introduction-to-containers-vms-and-docker-79a9e3e119b
[3]Learn Enough Docker to be Useful.https://towardsdatascience.com/learn-enough-docker-to-be-useful-b7ba70caeb4b
网友评论