Docker入门(1):概述 (2)

容器是Docker运行的实体,你可以理解为一个个”虚拟的操作系统“,这个容器是根据镜像构建出来的,比如你构建了一个包含了jdk,mysql,redis的镜像,那么只要根据这个镜像,你可以创建出很多个一模一样的容器。这里有点像面相对象中”对象“的概念。

然后我还想介绍一下仓库这个概念,你可以理解为,仓库里面存储了很多的镜像。为什么需要这么做呢,我认为一个是为了方便,另一个是为了复用。方便,是因为我们之前提到了”一次构建,多次使用“这个概念。我们只需要把配置好的环境打包成一个镜像,那么只需要把这个镜像拷贝出来,就可以在任何地方进行构建了。那么仓库就是像GitHub一样,我们可以把打包好的镜像push上去,在需要的机器上再pull下来,减少了运输成本。

另外一点,复用,是因为在很多时候,大家都是需要构建一样的环境了,比如某个版本的Redis,某个版本的MySQL,某个版本的JDK等等,那么有了仓库的话,我们就不需要再构建一次了,只需要使用别人构建过的就可以了。

如果我们把容器理解为运行在当前操作系统中的进程的话,只不过这个进程能够访问的资源是有限的,会让这个进程误以为”自己运行在了独立的操作系统中“,那么我们就能够理解这句话了:

Docker容器没有自己的Kernel,他使用的Kernel版本,跟镜像无关,宿主机有关。

这个问题其实蛮有趣的,原文在这里。

但是当初我还有个问题,我们在Docker的仓库中,有看到CentOS的镜像,也有看到Ubuntu的镜像。但是我们上面又说,容器用的是宿主机上的Kernel版本,而不是镜像的。那如果我在CentOS上运行了一个Ubuntu的镜像,该怎么解释呢?

原因是这样的,我们说的内核(Kernel),指的是Linux的核心,比如他的内存管理,文件管理等等,但是说的Ubuntu、CentOS这些,指的是Linux的发行版,这些发行版,都是基于Linux制作的,只不过在不同的发行版中,添加了不同的工具。比如在CentOS中,用的是yum包管理工具,在Ubuntu中,用的是apt包管理工具。

所以,他们的内核,其实还是Linux的内核。

写在最后

嗨,好久不见。

谢谢你能看到这里!

这篇文章主要是起到一个入门的作用,希望能够让你对Docker有一个初步的认识。

当然了,因为作者学识有限,在这篇文章中很多地方的讲解都是不到位的,如果有哪里讲得不到位,讲得不对,希望你能不吝指教,谢谢你!

在后面的文章中,我会给你介绍一下namespace这个概念,让你大概的知道容器到底是怎么实现的。

但是关于Docker的那些操作,不一定会写一篇文章。因为我觉得这方面优秀的文章已经很多了,官方文档也很详细。

《Docker入门》系列的文章目前的规划是大概会有两到三篇,定位是偏向于了解Docker及一点点的原理,实用性应该不会特别强。

再次感谢你能看到这里!

PS:如果有其他的问题,也可以在公众号找到我,欢迎来找我玩~

Docker入门(1):概述

内容版权声明:除非注明,否则皆为本站原创文章。

转载注明出处:https://www.heiqu.com/wpwxjj.html