参考:https://www.runoob.com/docker/docker-architecture.html
上篇文章我们分享了docker的一点内容之后,由于自己写文章是按照自己喜欢的技术来整理的,所以今天我们看下docker的架构体系是什么样?
Docker架构?在看Docker架构之前我们还是看下Docker的一些概念吧。
Docker镜像:Docker镜像(Image),相当于是一个root文件系统,比如说官方镜像ubuntu:16.04就包含了完整的一套Ubuntu16.04最小系统的root文件系统。
其实说到这是不是有点绕,你可以理解为镜像是一个用于生成docker容器的模板。里面包含了一些基础性的信息。
Docker容器(Container):docker容器可以理解为一个进程,即一个"应用程序",这个"应用程序"可以有各种,比如我们的web应用程序,数据库应用程序等。概念嘛,我们还是先了解一下,后面等实操的时候我们自然而然就会明白了。
镜像仓库(Respository):顾名思义,就是存放镜像的仓库,仓库这个词相信很多人都知道了,比如说粮仓,存放粮食的地方嘛,其实在你接触docker之前,仓库的名词你早有耳闻,我们的代码放置的位置就是代码控制中心了,比如gitHub,gitLab等有很多,到这或许你就明白镜像仓库的含义了。
上面说镜像是用于生成对应的容器的模板,那么镜像和容器是什么关系?作为java开发人员,作为面向对象语言的开发者,你知道类和对象之间的关系吧,对象是类的一个实例,那么镜像和容器的关系就如同类和对象之间的关系了,镜像是静态的定义,容器可以看做是镜像运行时的实体。
ok,我们说完上面的内容就开始今天我们的主要内容了,docker主要采用的是客户端/服务器模式,也就是简写版的c/s模式了。通过客户端直接和服务器进行交互得到自己需要的信息。
我们看下docker客户端和服务器通信的架构图了。
Docker使用客户端API进行和服务进程通信,用来管理和创建Docker容器。
看上面的架构图我们可以看到docker容器是运行在主机里面的,这个主机的概念可以理解为一台物理机或者一台虚拟机器,docker运行的环境都是基于类linux环境的。
上面的内容大致上讲了docker采用的架构,应该理解起来不会存在问题。