部署-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 流水线;
  • 三者结合:构成了现代云原生应用的标准技术栈,适用于从开发到生产的一体化交付流程。
相关推荐
java_logo18 小时前
Docker 部署 WordPress 全流程
运维·docker·容器·word·php·1024程序员节
程序员杰哥21 小时前
如何使用Postman做接口自动化测试及完美的可视化报告?
自动化测试·软件测试·python·测试工具·jenkins·postman·1024程序员节
武子康21 小时前
Java-159 MongoDB 副本集容器化 10 分钟速查卡|keyfile + –auth + 幂等 init 附 docker-compose
java·数据库·mongodb·docker·性能优化·nosql·1024程序员节
笑洋仟21 小时前
nvm切换node版本-jenkins上编译
运维·jenkins
JavaOpsPro21 小时前
审计 jenkins获取构建历史,生成excel
运维·jenkins·excel
wodongx1231 天前
从一开始部署Android项目Sonarqube的自动化扫码+通知+增量扫描功能(Win环境、Docker,基于Jenkins)
运维·docker·jenkins·1024程序员节
java_logo1 天前
Docker 部署 Elasticsearch 全流程手册
大数据·运维·mongodb·elasticsearch·docker·容器
Stay Passion1 天前
Docker 组件:Docker Swarm
运维·docker·容器
路過的好心人1 天前
Docker + Rabbitmq 集群部署
docker·容器·rabbitmq
熟悉的新风景1 天前
window安装Elasticsearch(es)
大数据·elasticsearch·jenkins