对于一个完全没有基础的人来说,理解“为什么需要这些知识”比“需要学什么”更重要。

我将彻底拆解DevOps所需的全部基本知识,并解释它们在DevOps工作中的具体作用。


DevOps 核心知识体系全景图

可以把成为DevOps工程师想象成盖一栋大楼,你需要从地基开始,一层层向上建设:

第一层:坚实的地基 - 操作系统与网络

1. Linux 操作系统

  • 它是什么? 一个开源、免费的操作系统。关键事实:超过90%的互联网服务器都运行在Linux上。这意味着你的工作环境几乎肯定是在Linux中。

  • 在DevOps中的核心作用:

    • 主战场:你需要管理的应用程序、数据库、工具(如Jenkins, Docker)全部部署在Linux服务器上。

    • 基本操作:你必须通过命令行(黑窗口)来操作它,完成:查看日志、安装软件、启动/停止服务、排查故障。

    • 技能体现:当程序出问题,你能否快速登录服务器,用 tail -f 查看实时日志,用 grep 过滤错误信息,用 top 检查CPU内存使用情况——这全都依赖Linux技能

2. 网络基础

  • 它是什么? 关于计算机如何相互通信的规则和原理。

  • 在DevOps中的核心作用:

    • 连通性保障:你需要确保服务器之间、用户与服务器之间能正常通信。

    • 问题诊断:当应用访问不了,你需要判断是程序问题、服务器问题还是网络问题。

    • 必备知识:

      • IP地址和端口:就像房子的地址和门牌号,服务靠它定位。

      • HTTP/HTTPS协议:网站和API通信的基础。

      • DNS:将域名(如www.google.com)解析成IP地址。

      • 防火墙:服务器的安全门卫,控制哪些流量可以进出。


第二层:自动化的骨架 - 脚本与编程

3. Shell 脚本

  • 它是什么? 将一系列Linux命令写在一个文件里,形成一个可执行的程序,用来完成特定任务。

  • 在DevOps中的核心作用:

    • 自动化“胶水”:把零散的命令组合起来,完成复杂的重复性工作。

    • 实用场景:

      • 自动备份文件和数据库。

      • 批量检查100台服务器是否存活。

      • 自动部署应用(停旧服务->备份->解压新包->启动新服务)。

    • 特点:简单、直接,与Linux系统无缝集成,是快速解决问题的首选。

4. 一门高级编程语言(Python 或 Go)

  • 它是什么? 比Shell更强大、更结构化、能开发复杂程序的工具。

  • 在DevOps中的核心作用:

    • 构建工具和平台:当Shell能力不足时,用它来写更强大的自动化工具和运维平台。

    • 与API交互:现代云平台(AWS/阿里云)和工具(K8s, Docker)都提供API。你需要用Python/Go调用API来创建和管理资源。

    • 处理复杂任务:处理JSON/YAML配置文件、进行复杂的日志分析、开发Web管理界面等。

  • 为什么首选推荐Python?

    • 语法简单,对新手极其友好,像读英语一样。

    • 生态强大,拥有海量的现成库,尤其是在运维自动化领域。

    • 是很多著名运维工具(如Ansible)的开发语言。


第三层:协作与效率的引擎 - 开发与运维的桥梁

5. Git 版本控制

  • 它是什么? 一个记录文件所有历史变化的“时间机器”,最初为代码而设计,现在DevOps用它管理一切(代码、配置、脚本)。

  • 在DevOps中的核心作用:

    • 团队协作基石:让多人同时修改代码而不会混乱。

    • 一切皆可追溯:任何修改都有记录。如果新版本出问题,可以一键回退到旧版本。

    • CI/CD的触发器:当你执行 git push,会自动触发后续的构建、测试和部署流程。

6. 容器化技术(Docker)

  • 它是什么? 一种将应用及其所有依赖(库、环境变量、配置文件)打包成一个独立、轻量级“容器”的技术。这个容器可以在任何地方运行。

  • 在DevOps中的核心作用:

    • 解决环境问题:经典难题“在我电脑上是好的,为什么线上不行?”被Docker彻底解决。构建一次,到处运行。

    • 实现环境标准化:开发、测试、生产环境完全一致。

    • 提升部署效率:容器启动是秒级的,远比传统虚拟机快。

7. 持续集成/持续部署(CI/CD)

  • 它是什么? 一套自动化的流程,从代码提交到应用部署,无需人工干预。常用工具有Jenkins, GitLab CI。

  • 在DevOps中的核心作用:

    • 自动化流水线:实现“代码一动,自动上线”。

    • 提升软件交付速度和质量:自动化流程包含了自动测试,能快速发现错误。

    • 核心流程:代码推送 -> 自动构建 -> 自动测试 -> 自动部署到测试环境 -> 自动部署到生产环境。

8. 云平台(AWS/Azure/Google Cloud/阿里云)

  • 它是什么? 通过互联网提供计算能力、存储、数据库等服务的平台。你无需自己购买物理服务器。

  • 在DevOps中的核心作用:

    • 基础设施的来源:你所有的服务器、数据库、网络资源都从这里申请。

    • 按需付费,弹性伸缩:业务高峰时自动扩容更多服务器,低谷时自动缩容以节省成本。

    • 服务化:直接使用云平台提供的数据库、缓存、消息队列等服务,无需自己搭建维护。


知识串联:一个真实的DevOps工作流

假设你要上线一个新功能:

  1. 【Git】 你从主分支创建新分支进行开发,完成后提交代码并发起合并请求。

  2. 【CI/CD - Jenkins】 代码合并动作自动触发Jenkins流水线。

  3. 【Shell/Python】 Jenkins依次执行你写好的脚本:

    • test.sh:运行自动化测试。

    • build.sh:用Python调用Docker API。

  4. 【Docker】 根据你写好的Dockerfile,将应用打包成一个镜像。

  5. 【云平台】 流水线将Docker镜像部署到云平台的生产服务器上。

  6. 【Linux】 部署后监控发现CPU异常,你立刻通过Linux命令登录服务器,用 top 和 journalctl 定位到一个内存泄漏的进程。

  7. 【Git】 你快速回滚代码到上一个稳定版本,先恢复服务。

一句话总结:

所以我们就是将代码推送 -> 自动构建 -> 自动测试 -> 自动部署到测试环境 -> 自动部署到生产环境。这个流程搭建起来,然后进行后期的检查和维护

Logo

码道开发者社区,聚焦华为云码道 CodeArts 代码智能体,沉淀 Agent、Skill、鸿蒙开发实战内容,供开发者查阅资料、交流技术、分享工程实践

更多推荐