首先一听到docker那肯定就要知道,docker是什么。
针对于docker是什么 ,干什么用,那些官方性的话我就不说了,百度一下一大片,直接就用他的logo做介绍,首先需要知道,docker现在普遍的用于linux,windows,如果把linux,windows比作是大海的话,那docker就是那条鲸鱼,拿有的人就纳闷了,那他背上的集装箱是几个意思啊?
那好好的看一下图标,你品,你仔细品,你细细的品,docker他的核心是:镜像,容器,仓库,而这个集装箱他就是一个容器。
那这个容器到底是什么呢?针对于容器的概念呢,有点抽象,举个简单的例子就是:你吃饭用的碗,里面有饭,有排骨,有荷包蛋。你这个碗就是一个容器。说白了就是用来存放东西的一个东东叫做容器。那docker里面的这个容器到底放的是什么呢?
docker里面的容器是用来存放各种服务,比如:php,mysql,nginx,redis,mongo,swoole等等。
说到这个容器,大致应该就明白docker是干嘛的吧?想象以下,如果那些集装箱里面装了各种服务,当另一台服务器是全新的时候,但是又要配置和docker里面相同的环境,那我只要把这些集装箱里面的东西拿出来拷贝一份。到另外一个服务器上面去下载一个docker然后把这拷贝过来的东西放到集装箱里面,那不就是一样的环境了么?docker的一个用处
接下来说到镜像,镜像他是一个联合文件系统,怎么理解呢?就是好比一个鸡蛋壳一样。举个简单的例子。我们下载一个php镜像,docker pull php
会发现,我pull了一个php,居然给我下载了那么多东西。那这些是什么呢?(我也不知道)
但是我知道的是,这些东西肯定是运行PHP,所必需的东西,下面用一个图来解释
从图中可以看到,下载一个PHP所需要下载的东西是一层一层的往外套,就好比洋葱一样,这就是镜像的一个原理,具体的联合文件系统的解释,就不做官方介绍了。
说到镜像这块,在说一说,镜像和容器的关系,如果把镜像比作一个类,那容器就是实例化的这个类,上面图片里面最里面的是一个kernel,他就是一个精简版的linux,那需要怎么证明呢?举个简单的例子。
我们运行一个容器,然后进入到这个容器里面。
看到没有?居然和宿主机的linux一毛一样,在回想一下,一个服务需要启动,是不是需要一个运行环境,那最基础的运行环境是什么?linux咯
所以kernel就是一个linux的内核,至于他为什么没有Linux那么大呢?因为这是一个精简版的,没有硬件和杂七八杂的东西,只有简单基础的一个环境。
至于仓库就不多介绍了,就是一个存放镜像的一个地方,举个简单的例子,github就是这样一个仓库。