Docker架构分析

       如下图所示,Docker采用的是 Client/Server 架构。客户端向服务器发送请求,服务器负责构建、运行和分发容器。

  客户端和服务器可以运行在同一个 Host 上,客户端也可以通过socket或 REST API与远程的服务器通信。

  

 

1.Client

Docker客户端,最常用的Docker客户端是docker命令。通过docker我们可以方便地在Host上构建和运行容器。

docker支持很多操作(docker命令行工具),用户也可以通过REST API与服务器通信。

Client和Docker daemon通信可使用https/http协议进行通信,为了安全起见,默认使用的就是https协议。

2. Docker-Host

Docker daemon:  

   Docker daemon是服务器组件,即Docker守护进程服务器,以Linux后台服务的方式运行。

    Docker daemon运行在Docker host上,负责创建、运行、监控容器,构建、存储镜像。默认配置下,Docker daemon只能响应来自本地Host的客户端请求。如果要允许远程客户端请求,需要在配置文件中打开TCP监听(支持IPV4IPV6)。

       

  Containers:  

    Docker容器,用于加载Docker镜像。换句话说,Docker容器就是Docker镜像的运行实例。我们知道镜像(Image)是只读的,在启动一个Container时,其实就是基于Image来新建一个专用的可写仓供用户使用。

       

  Image:   

    可将Docker镜像看成只读模板(它类似于虚拟机使用的ISO镜像文件),通过它可以创建Docker容器。例如某个镜像可能包含一个Ubuntu操作系统、一个Apache HTTP Server以及用户开发的Web应用。

    镜像有多种生成方法:

      (1)可以从无到有开始创建镜像;

      (2)也可以下载并使用别人创建好的现成的镜像

      (3)还可以在现有镜像上创建新的镜像

      (4)我们可以将镜像的内容和创建步骤描述在一个文本文件中,这个文件被称作Dockerfile,通过执行docker build <docker-file>命令可以构建出Docker镜像。

    公开的镜像仓库有很多种,如下所示:

      Docker官方镜像地址:

        https://hub.docker.com/。

      阿里的docker镜像地址:

        https://mirrors.aliyun.com/docker-ce/linux/

      清华大学docker镜像地址:

       https://mirrors.tuna.tsinghua.edu.cn/docker-ce/

3.Registry

我们去构建镜像时,镜像做好之后应该有一个统一存放位置,我们称之为Docker仓库,Registry是存放Docker镜像的仓库(官方默认仓库在"https://hub.docker.com"),Registry分私有和公有两种。

       Images和Registry之间默认使用的时https协议,当然如果你非要指定为http协议也是可以的。

       启动容器时,docker daemon会试图从本地获取相关的镜像;本地镜像不存在时,其将从Registry中下载该镜像并保存到本地。  

       Registry用于保存docker镜像,包括镜像的层次结构和元数据。用户可自建Registry,也可使用官方的Docker Hub。  

       Docker Registry中的镜像通常由开发人员制作,而后推送至"公共"或"私有"Registry上保存,供其它人员使用,例如"部署"到生产环境。

       Docker Registry可分为以下几类:    

    Sponsor Registry:

      第三方的registry,供客户端和Docker社区使用。    

    Mirror Registry:

      第三方的registry,只让客户使用。    

    Vendor Registry:

      由发布Docker镜像的供应商提供的registry。    

    Private Registry:

      通过设有防火墙和额外的安全层的私有实体提供的registry。  

       Registry包括Repository和Index,详细说明如下:    

              Repository:      

                     由某特定的docker镜像的所有迭代版本组成的镜像仓库;

                     一个Registry中可以存在多个Repository:        

                     Repository可分为"顶层仓库"和"用户仓库";        

                     用户仓库名称格式为"用户名/仓库名"。      

                     每个仓库可以包含多个Tag(标签),每个标签对应一个镜像;    

              Index:      

                     维护用户账户,镜像的校验以及公共命名空间的信息;      

                     相当于为Registry提供了一个完成用户认证等功能的检索接口。

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值