第15天:从“在我的机器上能运行”到自动化:学习 Jenkins 和 Docker

发布: (2025年12月25日 GMT+8 00:59)
4 min read
原文: Dev.to

Source: Dev.to

Introduction

今天是我 DevOps 学习之旅的关键一天。我摆脱了手动流程,开始探索自动化的世界。重点是理解 CI/CD 背后的原因,了解 Jenkins 如何编排任务,并重新审视 Docker 的核心概念,以弄清它与虚拟机的根本区别。

以下是我今天学到的内容概览。

Why CI/CD? (Continuous Integration / Continuous Deployment)

在深入工具之前,我先了解了 CI/CD 为什么是现代软件开发的支柱。

  • 问题所在: 过去,开发者会孤立地写代码数周。当他们终于尝试合并更改时,就会出现“集成地狱”——冲突遍布,构建失败。
  • 解决方案(CI): 持续集成意味着开发者频繁地将代码更改合并到中央仓库。自动化的构建和测试会立即运行,以便及早捕获错误。
  • 交付(CD): 持续部署/交付确保代码更改会自动准备好发布到生产环境。

关键收获: CI/CD 不仅仅是为了加快速度,更是为了可靠性。它消除了“在我的机器上可以运行”的借口。

How Jenkins Works

Jenkins 是一个开源的自动化服务器——常被称为 DevOps 的“管家”。它帮助自动化软件开发中与构建、测试和部署相关的部分。

Architecture

  • Jenkins Master: 大脑。保存配置、调度任务、监控整个过程,并为用户提供 GUI。
  • Jenkins Agents (Nodes): 工作节点。Master 向 Agents 发送指令,Agents 执行实际的构建步骤(例如编译 Java 代码或运行 Python 脚本)。

Jenkins 使用 pipelines(在 Jenkinsfile 中定义)来脚本化部署过程的各个步骤。

Docker Revisited: Images vs. Containers

这两者很容易混淆,下面的类比帮助我理清了概念:

  • Docker Image: 可以把它看作配方(或编程中的类)。它是只读的模板,包含运行应用所需的代码、库和依赖。
  • Docker Container: 可以把它看作蛋糕(或编程中的对象)。它是镜像的可运行实例。你可以用同一个配方(镜像)烤出许多蛋糕(容器)。

Docker Containers vs. Virtual Machines (VMs)

Virtual Machines

  • 笨重。
  • 每个 VM 都需要完整的客操作系统(OS)。
  • 启动需要几分钟。

Docker Containers

  • 轻量。
  • 共享宿主机的 OS 内核;不需要为每个应用提供完整的 OS。
  • 启动仅需毫秒级。

结论: 容器更高效,因为它们在不模拟整套硬件和操作系统的情况下隔离应用进程。

Conclusion

今天为我的自动化学习奠定了坚实的理论基础。了解 Jenkins 的架构以及 Docker 容器的高效性,使我明白这些工具为何成为行业标准。我期待着动手实践,尽快构建我的第一个 Jenkins pipeline!

Back to Blog

相关文章

阅读更多 »

Jenkins 在 AWS + Docker

Jenkins 在 AWS + Docker 的封面图片 https://media2.dev.to/dynamic/image/width=1000,height=420,fit=cover,gravity=auto,format=auto/https%3A%2F%2Fdev-to-upload...

什么是 DevOps?

引言 如果在网上搜索“什么是 DevOps?”,你会找到许多复杂的定义。在本文中,我们将从基础解释 DevOps。DevOps = De...