1. 引言
在 上一篇博客 中,我们学习了每个 DevOps 工程师都需要掌握的 Linux 基础:使用 Bash 导航、管理服务,以及通过包管理器安装软件。
现在,是时候迈出下一步了。要真正理解 DevOps,你需要的不仅仅是单机上的命令 —— 还需要理解 环境是如何创建的、系统之间如何通信、以及如何保持一致地配置环境。
在本文中,我们将介绍三个重要的构建模块:
- 虚拟化 → 安全且一致地运行环境。
- 网络 → 系统之间如何通信。
- YAML → 将现代 DevOps 工具粘合在一起的配置语言。
2. 虚拟化基础
什么是虚拟化?
从本质上讲,虚拟化就是在“你的电脑里再运行一台电脑”。 与其需要多台物理服务器,不如通过虚拟化在同一硬件上创建多个虚拟服务器。
为什么这对 DevOps 很重要?
- 你可以在不增加硬件的情况下快速创建 可重复的测试环境。
- 你可以进行 安全的实验 —— 在虚拟机里搞坏系统也不会影响到你的笔记本。
- 它是 云计算 的基础,公司依靠它大规模运行成千上万台虚拟机。
入门虚拟化工具
-
VirtualBox 一个免费且流行的本地虚拟机工具。非常适合初学者练习 Linux,而无需双系统或额外硬件。
-
Vagrant 一个自动化虚拟机配置的工具。只需一个配置文件,就能快速启动带有预设环境的虚拟机 —— 让团队之间的环境保持一致性。
💡 学习小贴士:VirtualBox + Vagrant 是本地练习的完美组合,特别适合刚入门时使用。
行业中的虚拟化
虽然 VirtualBox 和 Vagrant 对学习很有帮助,但在现代公司中更常见的是:
- 云虚拟机(如 AWS EC2、Azure VMs、Google Cloud Compute Engine)。
- 容器(Docker),用于轻量、快速、可移植的环境。
因此,可以把 VirtualBox 看作是你的 训练场,而云与容器则是虚拟化在 真实世界中的应用。
虚拟机 vs 容器
-
虚拟机 (VMs):
- 每个虚拟机都运行完整的操作系统及其内核。
- 隔离性更强,但资源占用更高(RAM、CPU)。
- 示例:在笔记本上同时运行 Ubuntu 和 Windows。
-
容器 (Docker):
- 共享宿主机的内核。
- 轻量、启动快、资源占用少。
- 示例:在容器中运行一个 API,和其他应用隔离。
两者的目标都是提供 隔离环境,但它们解决的问题不同。
➡️ 更多知识:如果你关注过我的 后端编程路线图,可能记得我写过一篇关于 容器与虚拟化 的文章,从后端角度出发,主要讲容器在软件开发中的使用。
3. 网络基础
当我们从单机扩展到多系统时,关键问题是:它们如何通信? 这就是网络概念的作用所在。作为 DevOps 工程师,你不必成为网络专家,但需要掌握基础知识,以便调试和部署系统。
DNS(域名系统)
- DNS 就像互联网的电话簿。
- 它把人类易读的名字(如
google.com)翻译成机器能识别的 IP 地址(如142.250.191.46)。 - 为什么重要:如果 DNS 配置错误,即使服务器运行正常,你的服务也可能无法访问。
IP 地址
- IP 地址 用来标识网络中的机器。
- IPv4 基础:如
192.168.0.1。 - 私有 IP:用于内部网络(例如家庭 WiFi 或云 VPC)。
- 公网 IP:对互联网可见。
💡 提示:在云环境中,一台虚拟机可能同时拥有私有 IP(内部通信)和公网 IP(外部访问)。
端口
-
一台机器(IP)可以同时运行多个服务。端口用来区分它们。
-
常见端口:
- 80 → HTTP(网站)
- 443 → HTTPS(安全网站)
- 5432 → PostgreSQL
- 6379 → Redis
示例:如果你在 8080 端口运行了一个 Web API,可以通过以下命令测试:
curl http://localhost:8080
如果有响应,说明服务在运行;如果没有,可能是网络问题(防火墙、DNS、端口错误)。
➡️ 更多知识:如果你关注过我的 后端编程路线图,可能记得我写过一篇关于 网络与互联网 的文章,更侧重讲解 Web 在协议层面的工作原理(HTTP/HTTPS、请求与响应)。
4. YAML 基础
现代 DevOps 工具大量依赖 配置文件。 相比硬编码设置或冗长脚本,我们通过配置语言定义基础设施和工作流,而 YAML 已经成为最流行的选择。
为什么是 YAML?
- 广泛应用:Docker Compose、Kubernetes、GitHub Actions、Ansible 等等。
- 可读性强,基于缩进,比 JSON 或 XML 更适合配置文件。
示例
杂乱的 JSON:
{"service": {"name":"api","replicas":3,"port":8080}}
简洁的 YAML:
service:
name: api
replicas: 3
port: 8080
注意事项
- YAML 对 空格敏感。缩进错误 = 配置报错。
- 禁止使用 Tab,只能用空格。
💡 专业提示:务必使用支持 YAML 的编辑器(VS Code、IntelliJ 等),避免隐藏的格式错误。
5. 学到的经验
- 虚拟化 让我们能在本地模拟真实服务器,并能扩展到云端。
- 网络 是系统之间的语言 —— 即使只懂基础,也能节省大量调试时间。
- YAML 看似无聊,却是现代 DevOps 工具的粘合剂。
这些看似小的知识点,其实是 DevOps 一切工作的地基。 没有它们,像 Docker、Kubernetes 或 Terraform 这样的工具会难以理解。
6. 下一步
在下一篇文章中,我们将在此基础上迈入 自动化 的第一步:
- 搭建一个简单的 CI/CD 流水线,自动化构建、测试和部署。
敬请期待 —— 这将是 DevOps 真正变得神奇的地方 🚀。