第二章 九析带你完爆 Docker 架构

网友投稿 213 2022-10-31

第二章 九析带你完爆 Docker 架构

本系列文章:第一章:九析带你完爆 Docker 安装第二章:九析带你完爆 Docker 架构

目录

1 Docker 架构

2 Docker 组件

3 Docker 进程

3.1 客户端进程

3.2 服务端进程

3.3 registry 进程

1 Docker 架构图

我认为一个好的架构图要做好三件事,第一:要展示出所有重要组件;第二:要清晰定义这些组件的主次、层次、范围和通信等关系。第三:要足够简单,可以让人一目了然。我认为上面的架构图已经全部都做到了。

docker 由客户端(client)、服务端( Docker daemon,简称 dockerd )和注册服务器(Registry)三个组件组成,是典型的c/s架构。其中服务端组件的操作对象为:镜像(image)和容器(container)。docker 各个组件可以在同一台主机,也可以在不同的主机。因此,Docker 已经不能再被简单看成工具,而应该被看成一个平台。

2 Docker 组件

docker 三大组件都各司其职,这里可以用一个生产加工型的企业做类比。

1) docker client:   管理部门。负责向 docker daemon 安排工作。

2)docker registry:仓储部门。负责存储生产原料(image)。

3)docker daemon:生产部门。和仓储部门沟通,获取生产原料;和管理部门沟通,接受任务,生产商品(container)。

3 Docker 进程

Docker 默认情况下不安装 registry。client 和 daemon 程序包路径如下:

1)  client:  /usr/bin/docker

2) daemon: /usr/bin/dockerd

3.1 客户端进程

客户端进程生命周期很短,从发送命令给 daemon,再到 daemon 响应返回、打印到控制台,往往几秒钟就结束了。下图是客户端进程的一个快照。

3.2  服务端进程

可以直接使用如下命令来启动服务端进程。

但是一般情况下,docker 安装程序会将服务端封装成一个操作系统后台服务,然后交给系统控制器 (systemctl) 来统一进行管理。这样做的好处是以后可以只通过名称(docker)而不是路径(/usr/bin/dockerd) 来管理后端服务了。

sudo systemctl enable dockersudo systemctl start dockersudo systemctl stop dockersudo systemctl restart dockersudo systemctl status docker

后台服务配置文件路径 /usr/lib/systemd/system/docker.service。截图如下:

从截图可以看出系统服务运行时会依赖哪些其他服务(Unit单元)、真正调用的后台程序是(/usr/bin/dockerd)、资源限制(Limit)、重启策略(Restart)等。

执行如下命令启动服务端进程。

sudo systemctl start dockerps aux | grep dockerd | grep -v grep

这里首先要区分两个概念:registry 和 repo。repo 仅仅表示存储概念,而 registry 是 repo + 认证(鉴权、授权)。也就是说仓库并不是谁访问都可以,它还需要有一个认证和准入的操作。

此外,registry 还有公共和私有之分。docker 默认使用的就是公共 registry(hub.docker.com)。因此你在本地是无法看到 registry 的进程。如果你想在本地也看到 registry 的进程,你需要下载 registry 镜像,并将镜像加载在容器中运行才行。

sudo mkdir /opt/data/registry -psudo docker run -d -p 5000:5000 -v /opt/data/registry:/tmp/registry registry:2

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:基于并行接口的动态参数采集系统的设计
下一篇:PROFINET接口实现开放的ISOonTCp通信
相关文章

 发表评论

暂时没有评论,来抢沙发吧~