部署-k8s和docker、jenkins的区别和联系

k8s和docker、jenkins的区别和联系

Kubernetes (k8s)DockerJenkins 是现代云原生开发中常用的三个核心工具,它们分别承担不同的角色,但又可以协同工作,实现高效的 CI/CD(持续集成与持续交付) 流程。


一、三者的核心定位

工具 定位 主要功能
Docker 容器化平台 构建、运行和管理容器镜像
Kubernetes (k8s) 容器编排系统 管理大规模容器集群的部署、调度、扩缩容等
Jenkins CI/CD 工具 实现代码自动构建、测试、部署流水线

二、区别详解

1. Docker:容器构建与运行

  • 作用:将应用及其依赖打包成一个标准化的容器镜像,并在任何支持 Docker 的环境中运行。
  • 典型使用场景
    • 开发环境本地运行微服务
    • 打包应用为镜像供其他系统使用
    • 快速启动、停止、复制容器

2. Kubernetes:容器编排与集群管理

  • 作用:管理多个 Docker 容器在多台主机上的部署、调度、伸缩、服务发现等。
  • 典型使用场景
    • 微服务架构下的服务部署
    • 高可用、弹性伸缩的应用管理
    • 多租户资源隔离与调度

3. Jenkins:自动化构建与部署流水线

  • 作用:监听代码变更,触发构建、测试、打包、部署流程,实现 DevOps 中的自动化操作。
  • 典型使用场景
    • 每次 Git 提交后自动构建项目
    • 自动执行单元测试、集成测试
    • 自动推送镜像到仓库并通知 Kubernetes 部署

三、联系与协作流程

这三个工具可以组成一个完整的 CI/CD + 容器化部署体系,典型的协作流程如下:

复制代码
Git Commit → Jenkins 触发构建 → Maven/Gradle 编译 → Docker 构建镜像 → 推送至镜像仓库
     ↓
Jenkins 调用 Kubernetes API 或 Helm 命令 → Kubernetes 拉取镜像并部署新版本

示例流程说明:

  1. 开发者提交代码到 Git
  2. Jenkins 监听到提交事件,触发 Pipeline
    • 下载代码、编译、打包成 jar/war/docker 镜像
  3. Jenkins 将镜像推送到私有仓库(如 Harbor)
  4. Jenkins 调用 Kubernetes 的命令或更新 Helm Chart
  5. Kubernetes 拉取新镜像并滚动更新服务

四、类比理解

类比 描述
Docker = 集装箱 把货物(应用)打包进集装箱(容器),便于运输
Kubernetes = 港口调度中心 负责调度集装箱、安排码头、物流路线
Jenkins = 物流管理系统 自动安排何时发货、走哪条路线、是否需要质检

五、常见组合方式

场景 使用方式
本地开发调试 Docker + Docker Compose
单机部署 Docker + Shell 脚本
小型团队部署 Jenkins + Docker
企业级部署 Jenkins + Docker + Kubernetes
云厂商部署 Jenkins + Helm + K8s + Harbor

六、总结对比表

功能 Docker Kubernetes Jenkins
容器构建
容器运行 ✅(底层调用 Docker)
容器编排
自动化构建
CI/CD 支持
服务部署 ✅(配合使用)

七、实际应用场景示例

以 Spring Boot 微服务为例:

  1. 开发人员编写代码并提交到 GitLab
  2. Jenkins Pipeline 启动构建任务
    • 使用 Maven 编译项目
    • 使用 Dockerfile 构建镜像并推送到 Harbor
  3. Jenkins 调用 Kubernetes 更新 Deployment
    • 修改镜像版本号
    • Kubernetes 滚动更新 Pod
  4. 服务自动上线,完成部署

八、结语

  • Docker 是基础:负责容器化;
  • Kubernetes 是中枢:负责容器编排与集群管理;
  • Jenkins 是引擎:驱动整个 CI/CD 流水线;
  • 三者结合:构成了现代云原生应用的标准技术栈,适用于从开发到生产的一体化交付流程。
相关推荐
yBmZlQzJ7 小时前
财运到内网穿透域名解析技术机制与中立评估
运维·经验分享·docker·容器·1024程序员节
一点晖光7 小时前
jenkins优化记录
运维·jenkins
sim20208 小时前
把某个pod固定到某个节点
kubernetes
yBmZlQzJ9 小时前
内网穿透工具通过端口转发实现内外网通信
运维·经验分享·docker·容器·1024程序员节
DeepHacking9 小时前
Overleaf 本地Docker部署
运维·docker·容器
好好生活_10 小时前
【Docker基础学习】从VM虚拟机到Docker
运维·docker
孤岛悬城10 小时前
46 Docker资源管理
docker·容器·云计算
cab511 小时前
如何解决由于 Docker 的大日志文件导致磁盘空间不足的问题
docker
天河归来11 小时前
本地windows环境升级dify到1.11.1版本
java·spring boot·docker
么么...13 小时前
在 Ubuntu 上安装 Docker 并部署 MySQL 容器
linux·运维·经验分享·笔记·mysql·ubuntu·docker