Docker 应用架构

本文详细介绍了Docker架构,包括客户端(Client)、服务端(Daemon)、镜像(Image)、仓库(Registry)和容器(Container),展示了它们在Docker中的协作与工作原理。
摘要由CSDN通过智能技术生成

docker-ct

Author:rab



前言

Docker 采用 C/S 网络应用模型,其核心组件包括:Docker 客户端(Client)、Docker 服务端(Docker Daemon)、Docker 镜像(Image)、Docker 仓库(Registry)及 Docker 容器(Container)。接下来通过架构图,详细说明一下 Docker 架构组件的功能及作用。

一、架构

Docker-cs

流程:Docker 客户端(Client)向 Docker 服务端(Docker Daemon)发起请求(如 docker pull/run/build … 等),Docker 服务端(Docker Daemon)收到请求后就会做出响应。假如是一个 pull 请求,那 Docker 服务端(Docker Daemon)就会向 Docker 仓库(Registry)拉取指定的镜像至 Host 本地进行存储,最后再根据 Docker 客户端(Client)的请求决定是否运行容器或做其他请求操作。

二、组件

2.1 客户端(Client)

Docker 客户端(Client),即 Docker 的客户端管理命令(如上图所示),Docker 客户端(Client) 可以与 Docker 服务端(Daemon)处于同个 Host 下,也可以分开(然后可通过 socket/RESET API 进行交互)。Docker 客户端(Client)向 Docker 服务端(Daemon)发起请求,然后 Docker 服务端(Daemon)负责构建、运行和分发容器。

2.2 服务端(Daemon)

Docker 服务端(Daemon),即以 Linux 后台服务方式运行的服务器组件,作为服务端,其为 Docker 客户端(Client)的相关请求提供服务和响应,并为客户端的请求负责创建、运行容器,及镜像构建与存储等。下图为后台运行的状态:

systemctl status docker.service

image-20220906111549565

Docker 服务端(Daemon)只能响应本地 Host 的 Docker 客户端(Client)请求,如果需要运行远程客户端的请求,需要启用 TCP 监听服务,具体步骤如下:

1、修改 Docker 配置文件

vim /etc/systemd/system/multi-user.target.wants/docker.service

# 追加 -H tcp://0.0.0.0

image-20220906111859229

2、重启 Docker 服务端(Daemon)

systemctl daemon-reload
systemctl restart docker.service

3、远程请求 Docker 服务端(Daemon)

docker -H 10.150.16.95 info

# 10.150.16.95:远程Docker服务端(Daemon)的IP地址

image-20220906112508384

2.3 镜像(Image)

在前面的博文已经提到,Image 是一种分层结构的只读镜像,它可通过服务端运行(run)为容器。而什么是镜像呢?又如何创建镜像呢?我们说,镜像是容器的基础。首先要了解镜像就先要了解一个概念——base 镜像,我们的任何镜像都是基于一个基础(base)镜像构建而成的。

而什么又是基础镜像呢?你需要明确基础镜像的两个特点:

  • 基础镜像不依赖于其他镜像,也即是说它是镜像的基本单元;
  • 其他镜像就可以以基础镜像为基准进行构建。

那这些(基础)镜像又存储于什么位置呢?一般我们可以通过创建自己的私有 docker 镜像仓库(如 Harbor)或直接使用官方的镜像仓库来实现基础镜像及其他镜像的存储,这就是接下来即将说到的 docker 仓库(Registry)。关于如何拉取 docker 仓库(Registry)中的镜像或其他镜像管理指令,大家可以自行看官方文档,这里不作为重点。

如下图就是从镜像仓库中拉取下来的镜像:

image-20220906114947026

那问题来了:既然镜像只读,那我其他镜像又是如何基于某个基础镜像来进行构建的呢?

关于这个问题我也已经做了总结,大家可以看看我前面的文章《Docker 的 Copy-on-Write 特性》

2.4 仓库(Registry)

在镜像一节中我们说了,仓库(Registry)就是用来存放镜像(Image)的,它分为私有镜像仓库和公有镜像仓库,所谓的私有镜像仓库就是你个人或你们公司内部搭建的镜像仓库(如 Harbor),只有你个人或你公司内部相关技术人员可使用。而公有镜像仓库默认是 Docker Hub,由 Docker 公司进行维护,该镜像仓库所有人都可进行下载使用。

关于如何部署一个私有 Docker 镜像仓库,大家可以参考我这篇部署文档《Harbor 私有镜像仓库部署》

2.5 容器(Container)

有了以上的基础后,紧接着就是通过镜像(Image)来运行一个容器实例了,用户可通过 Docker 客户端工具来运行、停止、删除容器了。如下图就是运行中的一个 Nginx 容器实例:

image-20220906110737069

以上就是 Docker 的基础架构及各组件的功能介绍。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

云计算-Security

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值