Docker 的架构及三大核心概念(image、container、repository)及 registry(仓库注册器)


       


       

看这里:

        戳此链接 通往 关于 Docker 所有的学习文章


1、Docker 的架构:

在这里插入图片描述
Docker 采用的是 c/s 架构!一般情况下 c 和 s 运行在同一个系统上!
       

Client :

        负责与守护进程(daemon)进行通信!因为用户不能直接和守护进程进行交互,得通过 client 间接通信!

        它们通信通过 socket(网络上的两个程序通过一个双向的通信连接实现数据的交换),daemon 会处理客户端的任务,例如:建立、运行、发布等… 如上图所示!
       
Server :

        server 端 其实就是一个服务进程,它管理着所有容器(client 则扮演着 server 的远程控制器,可以用来控制docker的服务端进程)
       


       

2、Docker 的 核心概念:

       
        Docker 大部分的操作 都是围绕着 他的 三大核心概念: image、container、repository !
       
       

2.1 Docker —— image(镜像)

       
        镜像 是 Docker 最重要、最基础的,没有镜像 你拿什么来构建容器 ???镜像可以来自 public repository(eg:docker hub 或 国内 阿里仓库)或 private repository(eg:harbor…)

       

注意: 1、image 用来 构建 container !(没有image 你就无法 构建其对应的 container)

            2、image 可以是 OS(eg:centos、ubuntu…) ,也可以是服务(eg: mysql、nginx…)

            3、镜像都有他们自己的 tag 标签,用来作为标识(一般为 版本号),我们上传镜像给仓库的时候,也可以自定义他们的标签(建议定义为版本号)

            4、镜像是由一系列的层组成的! 当你的 image 有改动时,只需要变更 image 对应的那一层即可,无须替换整个镜像!(虚拟机需要替换整个image)

            5、image 本身是 只读的 ! container 从 image 启动的时候,会在 image 的最上层创建一个 可写层!
       


       
2.2、Docker —— Container(容器)

       
        Docker Container 类似于一个 轻量级的沙箱,Docker 使用 Container 来运行和隔离应用!(就是你看到 Docker 图标上鲸鱼背上的集装箱!)

       

注意: 1、Container 是基于 image 来创建的(如果你创建 Container 失败,请先查看是否有 该 Container 对应的 image !)

            2、Container 可以 run、start、stop、rm…(这些容器都是相互隔离的!互不可见!进程隔离法!)

            3、可以将 Container 看成是: 一个简易版LInux系统 与 运行在其上的应用程序 所打包而成的一个盒子!
       


       
2.3、Docker —— Repository(仓库)

       
仓库:顾名思义是用来存放东西的,这里的 仓库 是用来存放 image 的!

repository 分为 public(公开) 和 private(私有):

①、public repository: docker hub 或 国内阿里docker仓库
②、private repository:harbor…

别老选择公开仓库,私有仓库也很赞啊,而且还比 公开仓库 更加的 快!毕竟 局域网情况下 你如何去 公共仓库 pull镜像呢?
       


       

3、Docker —— Registry(仓库注册器)

       
        很多时候,我们都会将 Registry 与 Repository 混为一谈,并不严格的区分!其实,Registry 是存放 Repository 的地方!在 Registry 上 往往 存放着多个 Repository,不同的 Repository 存放着不同的 image(根据 image 的 标签 “tag” )!

eg:如下图所示: 上面的版本号 就是 tag ;通过 tag 来给他们分别存放在不同的仓库,当然他们的 image 类型必须是一致的并且符合该仓库存放image的类型!
在这里插入图片描述

发布了99 篇原创文章 · 获赞 72 · 访问量 1万+

猜你喜欢

转载自blog.csdn.net/ljlfather/article/details/105441648
今日推荐