docker/docker compose/k8s

news/2025/9/26 13:50:33/文章来源:https://www.cnblogs.com/pass-ion/p/19110712

Docker、Docker Compose 和 Kubernetes(K8s)是现代容器化技术的核心组成部分,但它们扮演着不同的角色。

简单来说:

  • Docker:用来创建和运行单个容器的工具。

  • Docker Compose:用来定义和运行多个相互依赖的容器的工具。

  • Kubernetes (K8s):用来在一个集群中自动化部署、扩展和管理成千上万个容器的平台。

 

示例

经营一家餐厅(你的应用)。

  1. Docker:就像是厨师和菜谱

    • Docker 镜像 就是你的菜谱(例如,宫保鸡丁的菜谱)。它详细定义了需要哪些原料(代码、运行环境、依赖库)以及烹饪步骤。

    • Docker 引擎 就是厨师。他根据菜谱(镜像)来准备食材、开火、炒菜,最终做出一道宫保鸡丁。

    • Docker 容器 就是那道做好的宫保鸡丁。它是可以上桌的、独立的成品。

    • 核心:Docker 解决了“如何做出一个标准化、可复制的菜品(容器)”的问题。

  2. Docker Compose:就像是一桌宴席的订单

    • 一桌客人点了一整套宴席,包括凉菜、热菜、汤和主食。这些菜品之间有上菜顺序,并且需要共享一些资源(比如同一壶茶)。

    • Docker Compose 就是一个 docker-compose.yml 订单文件。它定义了这桌宴席需要哪几道菜(多个容器),比如一个 Nginx 容器、一个 Python Web 应用容器和一个 MySQL 容器。它还规定了容器之间的依赖关系(例如,Web 应用要等数据库启动后再启动)和网络连接。

    • 核心:Docker Compose 解决了“如何在一台厨房(一台主机) 上,协调地制作和供应一整套相关联的菜品(多个容器)”的问题。

  3. Kubernetes (K8s):就像是连锁餐厅的中央管理系统

    • 你现在不是开一家餐厅,而是开了一个拥有几十家分店的连锁品牌。你需要考虑:

      • 高可用性:一家分店的厨房着火了(服务器宕机),系统要能自动把订单调度到最近的其他分店。

      • 弹性伸缩:周末用餐高峰,系统要能自动命令所有分店多安排几个厨师(扩展容器数量);午夜低谷期,则让厨师下班休息(缩减容器数量)。

      • 资源调度:如何把订单(容器)合理地分配到各个分店(集群节点),使得所有厨房的负荷均衡,效率最高。

      • 滚动更新:要推出新菜谱(新版本应用),不能同时停掉所有分店来更新,而要一家一家地无缝切换,确保整个连锁品牌不间断运营。

    • Kubernetes 就是这个强大的中央管理系统。它管理的是一个集群(多个服务器/节点),自动处理上述所有复杂问题。

    • 核心:Kubernetes 解决了“如何在一个餐厅集群(多台主机) 上,自动化地、高可靠地运营成千上万个菜品(容器)”的问题。

 

详细对比表格

 
特性DockerDocker ComposeKubernetes (K8s)
核心功能 构建、运行和管理单个容器 编排和运行多个相关联的容器(在单机上) 自动化部署、扩展和管理大规模容器化应用(在集群上)
适用范围 单机开发、测试、运行微服务 开发、测试环境(单机多服务部署) 生产环境、大规模、高可用的应用部署
编排能力 简单的服务依赖和启动顺序 强大的自我修复、自动扩缩容、服务发现、负载均衡、滚动更新
部署单位 容器(Container) 项目(Project,由一组服务组成) Pod(K8s的最小调度单位,可包含多个紧密关联的容器)
定义文件 Dockerfile docker-compose.yml 多种资源定义文件,如 deployment.ymlservice.yml 等
集群支持 不支持(单机) 不支持(单机) 原生支持多节点集群
学习曲线 简单 简单 陡峭、复杂

 

在实际的开发和生产流程中,这三者通常是协同工作的:

  1. 开发阶段:

    • 开发者使用 Dockerfile 来定义每个微服务的运行环境。

    • 使用 docker-compose up 在本地一键启动整个应用(前端、后端、数据库等),极大地简化了开发环境的搭建。

  2. 生产阶段:

    • 将构建好的 Docker 镜像推送到镜像仓库(如 Docker Hub, Harbor)。

    • 使用 Kubernetes 的配置文件(YAML)来描述这些镜像应该如何在整个集群中运行、如何暴露服务、如何保持高可用等。

    • Kubernetes 从仓库拉取镜像,并按照配置在集群中调度和运行容器。

总结

  • Docker 是容器化的基石,是“原子”级别的工具。

  • Docker Compose 是在单机上对多个 Docker 容器进行“手动作坊式”的编排,非常适合开发和测试。

  • Kubernetes 是在集群层面对容器进行“工业化、自动化”的编排,是管理大规模生产级应用的事实标准。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/916852.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

中国开发者迎来新选择:Gitee成为研发协作平台转型期的中流砥柱

中国开发者迎来新选择:Gitee成为研发协作平台转型期的中流砥柱 随着腾讯CODING DevOps系列产品宣布逐步停止服务,中国开发者社区正面临一次重要的工具链迁移抉择。在这一行业转折点上,本土化研发协作平台Gitee凭借其…

PySpark - Get the number of rows

PySpark - Get the number of rowsspark is a SparkSession object, what does spark.sql().collect() do? ChatGPT said:Good question 👍 Let’s break it down:spark → a SparkSession object.spark.sql(query)…

如何推销网站建设做网站怎么签订协议

元描述:想要找到下一个 100 倍加密货币投资?请密切关注这篇文章;它揭示了所有可能很快变得非常有价值的 TON 网络宝石。 由 Telegram 提供支持的 TON(开放网络)生态系统正在蓬勃发展!这是一个充满激动人心的…

RK3588-ubuntu server - 详解

RK3588-ubuntu server - 详解pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco"…

一文教你上手 Geometric Glovius 6.0:安装、授权与首个项目演示

Geometric Glovius 6.0.0是一款功能强大的3D可视化分析软件。它支持CATIA、NX、Creo等多种主流CAD文件格式,能精确测量距离、面积、体积等数据,还可进行动态截面切割、模型差异对比等操作。用户可通过缩放、旋转等方…

32单片机+free rtos移植CJSON库函数主要流程

1.cJSON库的官方地址 源码地址: https://github.com/DaveGamble/cJSON 2.提取cJSON.c cJSON.h 3.在项目中添加cJSON的路径并编译一遍 4.在main函数初始化时添加下面代码,重定向内存的申请,内存申请定向到rtos的内存池…

Gitee如何重塑中国开发者生态:本土化创新与数字化转型的双重奏

Gitee如何重塑中国开发者生态:本土化创新与数字化转型的双重奏 在数字经济蓬勃发展的今天,代码托管平台已经从单纯的工具演变为开发者生态系统的核心枢纽。作为国内领先的一站式代码托管与协作平台,Gitee凭借对中国…

从MESA模型到锁升级:synchronized性能逆袭的底层逻辑

从MESA模型到锁升级:synchronized性能逆袭的底层逻辑管程(Monitor)是一种用于管理共享资源访问的程序结构,能确保同一时刻只有一个线程访问共享资源,解决并发编程中的互斥和同步问题。MESA模型是管程的经典实现,…

网站建设项目进展情况汇报浙江省建设银行纪检官方网站

机器人模型获取 接上期:机器人控制系列教程之控制理论概述,文中详细讲解了如何通过Solidworks软件导出URDF格式的文件。文末提到了若需要将其导入到Simulink中可在命令行中输入smimport(urdf/S_Robot_urdf.urdf),MATLAB将自动打开Simulink以…

输入输出接口

IO接口的作用 又被称为IO控制器,设备控制器,负责协调主机和外部设备之间的数据传输 1.数据缓冲:通过数据缓冲寄存器(DBR)达到主机和外设的工作速度匹配 2.错误或状态检测:通过状态寄存器反馈设备的各种错误,状态…

Go语言中的信号捕获与优雅退出:SIGINT、SIGTERM和SIGKILL详解 - 若

在开发长期运行的服务时,如何让程序优雅退出是一个重要课题。今天我们来深入探讨Go语言中如何处理常见的进程信号,实现平滑关闭。 理解三个关键信号 1. SIGINT(信号2)- 礼貌的中断请求全称:Signal Interrupt触发方…

(二)3.1.9 生产“稳”担当:Apache DolphinScheduler Worker 服务源码全方位解析

本文是 Apache DolphinScheduler 3.1.9 版本源码解读的第二篇:Worker Server 启动流程源码解读以及相关流程设计。结尾处附有相关流程图,供大家参考。作者 | 李杰 移动云,Apache DolphinScheduler贡献者在现代数据驱…

实用指南:虚拟机搭建 DHCP 服务器 + 配置 DHCP 中继:完整实操指南

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …

网站设计的技术方案wordpress安装主题教程

(来源:武汉市发改委)原标题:加快打造“五个中心” 武汉率先开建人工智能计算中心从华为东莞松山湖基地运来的预制化模块箱体,正在光谷科学岛起步区被吊装,未来将被“拼装”成武汉重要的人工智能算力基础设施。3月1日,武…

创建一个网站需要怎么做投票链接制作哪家服务好

在本篇文章里小编给大家整理的是一篇关于Python中免验证跳转到内容页的实例代码,有兴趣的朋友们可以学习分享下。相信很多人在浏览网页时,经常会碰到需要输入验证码才可以继续浏览的情况吧,遇到这种问题,大多数人只能进行繁琐的注…

海口建设局网站甘肃建设厅官方网站

Android 查看路由表_android 路由表_念雅的博客-CSDN博客

完整教程:生产环境实战:Spring Cloud Sleuth与Zipkin分布式链路追踪实践

完整教程:生产环境实战:Spring Cloud Sleuth与Zipkin分布式链路追踪实践pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family…

ibero 2025.1 Run PROGRAM_SPI_IMAGE_Action

ibero 2025.1 Run PROGRAM_SPI_IMAGE_Actionibero 2025.1 Run PROGRAM_SPI_IMAGE_ActionSPI Flash lemory is not configured. Use the Configure Design Initialization Data and memories tool to configure it按照以…

训练“系统级思维”,听时序数据库 IoTDB Committer 说说从设计到应用的成长

充满活力与机遇的开源社区,让我们完成从功能设计到系统应用的能力跃迁!想得更长远,离应用更近 2025 年 7 月 7 日、7 月 29 日,经 Apache IoTDB 社区投票,丁宇辰、曹志佳成为时序数据库 Apache IoTDB Committer。…

【设计模式】状态模式 - 详解

pre { white-space: pre !important; word-wrap: normal !important; overflow-x: auto !important; display: block !important; font-family: "Consolas", "Monaco", "Courier New", …