如下图所示,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监听(支持IPV4和IPV6)。
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提供了一个完成用户认证等功能的检索接口。
2023

被折叠的 条评论
为什么被折叠?



