(1)Docker架构与组件简介

1.Docker是什么?

简单来说,就是个"轻量级虚拟机"。你可以把Docker想象成一个超级轻便的"打包工具"。以前,我们要运行一个软件,得在电脑上安装各种环境、依赖库,折腾半天还可能因为系统不同而失败。Docker的出现就是为了解决这个问题:它把软件和它所需要的所有环境(比如代码、系统工具、依赖库)打包成一个"集装箱",也就是容器(Docker Containers)。这个"集装箱"可以在任何有Docker的电脑上运行,保证软件的行为完全一致,再也不用担心"在我电脑上能跑,到你那就报错"了。

2.Docker是怎么工作的?

基础架构图:

2.1.Docker架构的工作流程

(1)构建镜像:使用 Dockerfile创建镜像。

(2)推送镜像到仓库:将镜像上传到Docker Hub或私有仓库中。

(3)拉取镜像:通过docker pull从仓库中拉取镜像。

(4)运行容器:使用镜像创建并启动容器。

(5)管理容器:使用Docker客户端命令管理正在运行的容器(例如查看日志、停止容器、查看资源使用情况等)。

(6)网络与存储:容器之间通过Docker网络连接,数据通过Docker Volumes或绑定挂载进行持久化。

3.Docker的核心组件

完整架构图:

为了让你更容易理解,我们把Docker的各个部分拆开,用通俗的话以标准化的码头货柜系统来解释一下。

3.1.Client(对讲机/指令终端)

简介: 用户在命令行输入的docker命令,通过REST API与守护进程通信,告诉它"运行容器"、"构建镜像"等。
**角色:**码头工人手中的对讲机或电脑终端,用于向调度中心下达指令(如"卸货"、"装船"、"查询集装箱")。

3.2.Daemon(码头调度中心)

简介: Docker守护进程是后台常驻的服务,它负责管理所有容器、镜像、网络、存储卷等资源,并响应来自客户端的请求。
**角色:**码头总调度室,负责接收指令、管理泊位、安排起重机、监控集装箱状态等。

3.3.Image(集装箱设计图纸)

简介: 镜像是只读的模板,包含了应用程序及其运行环境(代码、运行时、依赖库、配置文件等)。它定义了容器启动时的初始状态。
**角色:**一份详细的集装箱设计蓝图,标明箱体尺寸、内部隔断、所需材料,以及里面应该装什么货物。

3.4.Container(集装箱)

简介: 容器是镜像的运行实例。它可以被启动、停止、删除,内部运行着应用进程。容器之间相互隔离,但可以通过网络通信。
**角色:**根据设计图纸制造出来的、装满货物的集装箱。每个集装箱可以独立装卸、运输,且彼此隔离。

3.5.Registry(集装箱堆场/仓库)

简介: 仓库用于存储和分发镜像。你可以从仓库拉取(pull)镜像到本地,也可以推送(push)自己制作的镜像到仓库供他人使用。
**角色:**存放大量集装箱设计图纸(镜像)的大型资料库,比如远程的图纸库。常用的有公共仓库(如Docker Hub)和私有仓库。

3.6.Network(码头内的道路与桥梁)

简介: 网络功能使容器之间、容器与外部世界能够通信。Docker提供了多种网络驱动(如桥接网络bridge、主机网络host、覆盖网络overlay),让用户可以灵活配置容器的网络连接。
**角色:**码头内部的道路、传送带或桥梁,连接各个泊位和堆场,让集装箱可以移动到需要的地方,也允许不同区域的工人交换信息。

3.7.Volume(集装箱内外的额外仓库)

简介: 数据卷是专门用于持久化数据的机制。当容器删除后,卷中的数据仍然保留,可以在新容器中重新挂载使用,实现数据持久化和共享。
**角色:**集装箱内部可能配有永久性的储物柜,或者码头边有大型仓库,用于存放那些即使集装箱被移走也需要保留的货物。

3.8.Compose(多集装箱组合方案)

简介: Compose是一个工具,通过一个YAML文件定义和管理多个容器组成的应用(例如:Web服务器+数据库+缓存)。一条命令就能启动或停止整个应用栈。
**角色:**一次运输任务可能需要多个不同类型的集装箱协同完成,比如一个冷藏箱装食品,一个干箱装机器,还有一个油罐箱装液体。码头调度员会编写一份"运输清单",定义这些集装箱如何组合、启动顺序以及它们之间的连接。

3.9.Swarm(多个码头联合运营)

简介: Swarm是Docker原生的集群管理工具,将多个Docker主机组成一个虚拟的"集群",用户可以像使用单台主机一样部署服务。Swarm负责负载均衡、服务发现、滚动更新和高可用性。
**角色:**如果一个码头的泊位不够用,可以联合附近几个码头形成一个港口集群,统一调度。某个集装箱需要卸货时,集群会自动选择一个有空位的码头来操作,并且如果某个码头出故障,货物会被转移到其他码头。

4.0.总结

Docker就像一套现代化的码头管理系统,它把应用程序打包成标准化的"集装箱"(Image),通过"调度中心"(Daemon)和"指令终端"(Client)进行管理,利用"资料库"(Registry)分发集装箱(Container),借助"道路网络"(Network)和"储物柜"(Volume)保障运行,还能通过"组合方案"(Compose)和"联合码头"(Swarm)处理更复杂的业务场景。这样一来,应用的开发、交付和运行变得像集装箱运输一样高效、可靠且可移植。

参考资料:

Docker架构:https://www.runoob.com/docker/docker-architecture.html

相关推荐
Java后端的Ai之路6 小时前
Kubernetes是什么?(小白入门版)
云原生·容器·kubernetes·教程
heimeiyingwang6 小时前
【架构实战】编排vs协同:微服务通信架构选型
微服务·云原生·架构
空中海7 小时前
第二篇:注册中心篇 — Nacos 与 Eureka 服务注册发现
spring boot·云原生·eureka
007张三丰8 小时前
系统架构设计师范文4:论微服务架构及其应用
微服务·云原生·架构·软考·系统架构设计师
AI攻城狮9 小时前
Human-in-the-Loop 是生产环境不可妥协的环节
云原生
长安链开源社区9 小时前
动手开发 | 如何通过k8s部署长安链
云原生·容器·kubernetes·区块链
Dontla10 小时前
kubectl命令介绍(K8s命令行客户端)
云原生·容器·kubernetes
又来敲代码了10 小时前
k8s的部署
linux·运维·云原生·容器·kubernetes
炸裂狸花猫11 小时前
开源身份认证与访问管理平台 - Keycloak(二)
docker·云原生·容器·kubernetes·开源·keycloak·sso
炸裂狸花猫11 小时前
开源身份认证与访问管理平台 - Keycloak(一)
docker·云原生·kubernetes·开源·devops