Docker的架构介绍及部署实战
Docker的架构介绍及部署实战
作者:尹正杰
版权声明:原创作品,谢绝转载!否则将追究法律责任。
一.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监听(支持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/ 温馨提示: 生产环境中,我们通常在公司内部部署有私有镜像仓库。如使用Harbor,Docker Registry等等。在后续的文章我们会逐一对其进行讲解。
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提供了一个完成用户认证等功能的检索接口。
二.Docker环境部署实战
三.
当你的才华还撑不起你的野心的时候,你就应该静下心来学习。当你的能力还驾驭不了你的目标的时候,你就应该沉下心来历练。问问自己,想要怎样的人生。 欢迎加入基础架构自动化运维:598432640,大数据SRE进阶之路:959042252,DevOps进阶之路:526991186