(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

相关推荐
cyber_两只龙宝4 小时前
Tomcat--企业级web应用服务器详细介绍与整合Nginx配置流程
linux·运维·前端·nginx·云原生·tomcat·负载均衡
糟糕喔4 小时前
k8s运维-pod篇(1)
云原生·容器·kubernetes
笨蛋不要掉眼泪4 小时前
从零构建微服务网关:Spring Cloud Gateway 核心原理与实战配置详解
java·微服务·云原生·架构
老葱头蒸鸡4 小时前
(2)Docker搭建私人仓库
云原生·eureka
悠闲蜗牛�4 小时前
下一代API网关深度实践:基于Spring Cloud Gateway的云原生网关架构与治理平台
微服务·云原生·架构
Coder_Boy_5 小时前
以厨房连锁故事为引,梳理Java后端全技术脉络(JVM到云原生,总结篇)
java·jvm·spring boot·分布式·spring·云原生
白云偷星子5 小时前
云原生笔记1
笔记·云原生
AC赳赳老秦5 小时前
2026云原生AI规模化趋势预测:DeepSeek在K8s集群中的部署与运维实战
运维·人工智能·云原生·架构·kubernetes·prometheus·deepseek
cyber_两只龙宝15 小时前
Nginx--企业高性能web服务器高级配置详解
linux·运维·nginx·云原生