Docker容器实战二:功能组件

Posted 运维老兵Alex

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker容器实战二:功能组件相关的知识,希望对你有一定的参考价值。

在深入学习Docker之前,我们有必要先从整体架构层面来对产品做一次了解。下图是Docker的官方架构图,从左至右可以看到依次包含了以下组件:

Docker Client(客户端)

Docker Daemon (服务端)

Docker Images (镜像)

Docker Containers (容器)

Docker Registry (仓库)

Docker容器实战二:功能组件_容器


这些核心组件构成了Docker的整个技术框架,本篇将对其做初步介绍,并在后续的文章中进行深入讲解。


一 . Docker Client

Docker使用C/S的软件架构,Client端包含了容器管理所需要的命令行工具,通常会与服务端部署在同一台机器上。在日常操作中,我们可以通过命令行的方式,与服务端进行交互。

除了客户端以外,Docker也提供了REST API的方式与服务端进行交互,这通常是在程序代码中使用。


二. Docker Daemon

Docker Daemon可以看做Docker的服务端,它是整个Docker架构的核心组件。Docker Daemon在Linux系统中使用后台服务的方式运行,负责对容器、镜像、网络等对象进行管理。它在接收到客户端的请求后,会根据请求执行对应的操作,并在完成后返回结果。


Docker容器实战二:功能组件_容器_02

在功能的实现上,Docker Daemon涉及到与底层模块的交互,其内部机制会比上图所显示的复杂很多。相关细节本文不过多展开讨论,有兴趣的朋友可自行查阅相关资料。


三. Docker Images

如果有使用过VMware虚拟机,会发现里面有一个很有用的功能:模板。在定制好模板后,我们就可以根据模板批量生成虚拟机。

Docker的镜像即有着这样的用途,我们可以将镜像看作是容器的只读模板,当要使用容器时,需提前定制好所需的镜像,然后通过镜像生成容器。

Docker容器实战二:功能组件_docker_03

对于镜像的获取有两种方式,一种是使用他人已经封装好的镜像,开箱即可使用。目前Docker的官方仓库有着数量丰富的镜像供使用,包括nginxmysql、tomcat等常用软件镜像。另外一种则是通过Dockerfile等方式自定义封装,这种方式可以满足我们对镜像的定制化要求,在后面文章会做介绍。


四. Docker Containers 

前文已经介绍过,容器类似系统中一个安全沙箱,可以用来运行和隔离应用。容器是由镜像创建而成,可被看作镜像的运行实例。单个镜像可支持创建多个容器。

Docker提供了一整套对于容器的操作命令,用户可以对容器进行创建、启动、停止等动作。


五. Docker Registry

Registry做为存放镜像的仓库角色,它可以被部署在企业内部做为私有仓库,也可以部署在互联网做为公共仓库开放使用。

Registry是Docker公司非常实用的创新,使用镜像仓库的好处很明显。当我们需要跨主机部署时,不需要手动将镜像进行拷贝或传输,只需要将镜像上传到仓库保存,即可在其他主机上同时下载镜像,这无疑会大大提升部署的效率。

Docker官方提供的Registry叫Docker Hub,上面提供了大多数常用软件和发行版的官方镜像,还有无数个第三方提供的定制化镜像。此外,企业中基于安全考虑,也会使用自建私有仓库的方式。


----------------------------- End -------------------------------------

专注于Devops运维技术分享,扫码关注公众号,获取更多精彩内容!

Docker容器实战二:功能组件_docker_04

以上是关于Docker容器实战二:功能组件的主要内容,如果未能解决你的问题,请参考以下文章

Zabbix实战之运维篇Zabbix监控Docker容器配置方法

linux12 - docker容器05 --> 数据卷挂载实战MySQL同步数据

云原生之Docker实战使用Docker部署ShowDoc文档工具

云原生之Docker实战使用Docker部署Kavita 个人漫画服务器

云原生之Docker实战使用Docker部署MinIO对象存储

docker的LNMP架构实战二