jekins k8s docker
·
Jenkins、Docker、K8s (Kubernetes) 是云原生与 DevOps 领域的三大核心技术,分别负责 自动化流程、应用容器化、容器集群管理,三者常组合使用,构建完整的 CI/CD 自动化交付体系。
一、核心概念与定位
1. Docker —— 应用的 "集装箱"
- 定位:容器化引擎,解决 "在我的机器上能跑" 的问题。
- 核心作用:
- 将应用代码、运行环境、依赖库、配置文件打包为镜像(Image)。
- 以 ** 容器(Container)** 形式运行,环境隔离、轻量、启动快。
- 保证 "一次构建,处处运行",消除环境差异。

2. Kubernetes (K8s) —— 容器的 "调度中心"
- 定位:容器编排平台,解决 "容器多了怎么管" 的问题。
- 核心作用:
- 自动化部署、扩缩容、自愈 Docker 容器。
- 管理集群(多台服务器)资源、负载均衡、服务发现。
- 实现应用高可用、滚动更新、快速回滚。

3. Jenkins —— 自动化的 "流水线大脑"
- 定位:CI/CD 自动化服务器,解决 "手动部署太麻烦" 的问题。
- 核心作用:
- 自动拉取代码 → 编译 → 测试 → 构建 Docker 镜像。
- 自动推送镜像到仓库,再调用 K8s API 完成部署。
- 可视化流水线,丰富插件生态,适配各种工具链。

二、三者关系与协同流程(CI/CD 流水线)
标准工作流:代码提交 → 构建 → 镜像 → 仓库 → 部署 → 运行
- 开发提交代码(GitLab/GitHub)
- Jenkins 触发:自动拉取代码、编译、测试
- Docker 构建镜像:通过 Dockerfile 打包应用
- 推送镜像:到 Docker Hub/Harbor 私有仓库
- K8s 部署:Jenkins 调用
kubectl更新 K8s 集群 - K8s 运行:拉取新镜像、创建 Pod、滚动更新、对外提供服务

三、核心区别对比
表格
| 维度 | Docker | K8s | Jenkins |
|---|---|---|---|
| 核心功能 | 应用打包、容器运行 | 容器集群调度、管理 | 自动化构建、测试、部署 |
| 解决问题 | 环境一致性、应用标准化 | 大规模容器管理、高可用 | 流程自动化、效率提升 |
| 层级 | 底层运行时(单机) | 上层编排(集群) | 顶层流程控制(CI/CD) |
| 关系 | 被 K8s 管理 | 调度 Docker 容器 | 调用 Docker、操作 K8s |
四、经典组合实战(极简示例)
1. 用 Docker 运行 Jenkins
bash
运行
docker run -d --name jenkins -p 8080:8080 -p 50000:50000 \
-v /var/run/docker.sock:/var/run/docker.sock \
jenkins/jenkins:lts
- 挂载
docker.sock让 Jenkins 容器内可调用宿主机 Docker
2. Jenkins 必备插件
- Pipeline:流水线核心
- Git:拉取代码
- Docker Pipeline:构建推送镜像
- Kubernetes CLI / Kubernetes:操作 K8s 集群
3. 典型 Jenkinsfile (Pipeline 脚本)
groovy
pipeline {
agent any
environment {
IMAGE_NAME = "my-app"
IMAGE_TAG = "${BUILD_NUMBER}"
REGISTRY = "docker.io/your-repo"
K8S_NS = "default"
}
stages {
stage('拉取代码') { steps { git 'https://github.com/xxx/your-project.git' } }
stage('构建镜像') { steps { sh "docker build -t ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} ." } }
stage('推送镜像') { steps { sh "docker push ${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG}" } }
stage('部署到K8s') {
steps {
sh "kubectl set image deployment/${IMAGE_NAME} ${IMAGE_NAME}=${REGISTRY}/${IMAGE_NAME}:${IMAGE_TAG} -n ${K8S_NS}"
}
}
}
}
五、总结
- Docker:造容器(应用打包)
- K8s:管容器(集群运行)
- Jenkins:自动化全流程(从代码到上线)
一句话记忆:Jenkins 指挥 Docker 打包,再让 K8s 去运行管理。
更多推荐




所有评论(0)