首页 / 开发工具 / Terraform 入门实战:用 D

Terraform 入门实战:用 Docker 5 分钟跑通基础设施即代码

Roxi
Roxi 加速器 — 稳定·快速·安全
全球节点覆盖,支持所有主流平台,一键连接无需配置。新用户免费试用。
立即体验 →

Chapter 1:OK so,先把 Terraform 跑起来

Q1需求调研Q2产品开发Q3内测上线Q4全面推广

兄弟们开机!这里是 eccfy,今天不讲玄学,直接上屏幕:我们用 Terraform 在本机创建一个 Nginx 容器,完整走一遍“基础设施即代码”。这篇 Terraform教程 适合第一次接触 IaC 的同学,不需要云账号,免费、官方、可复现。

先做 Terraform下载 和安装。macOS 用 Homebrew:brew install terraform;Ubuntu 可以用官方 apt 仓库安装;Windows 推荐用 Chocolatey:choco install terraform。装完立刻验证:

terraform -version

接下来确认 Docker 已启动:docker version。我本机测试环境是 MacBook M2、Docker Desktop 4.x,首次初始化耗时约 18 秒,后续 plan 基本 1 秒内完成。注意:如果这里 Docker daemon 没起来,后面 Terraform 会报 “Cannot connect to Docker daemon”,别急着重装 Terraform,先开 Docker。

Chapter 2:Now watch this,用代码创建 Nginx

85%转化提升2.5s响应速度100+功能模块365天持续更新

接下来新建目录,镜头拉近终端:

mkdir tf-docker-demo && cd tf-docker-demo

创建 main.tf,内容如下:

terraform { required_providers { docker = { source = "kreuzwerker/docker" version = "~> 3.0" } } } provider "docker" {} resource "docker_image" "nginx" { name = "nginx:1.25-alpine" keep_locally = false } resource "docker_container" "web" { name = "eccfy-nginx-demo" image = docker_image.nginx.image_id ports { internal = 80 external = 8080 } }

OK so,Terraform怎么用?记住四连招:

  1. terraform init:下载 provider,生成 .terraform
  2. terraform fmt:自动格式化配置。
  3. terraform plan:预览会创建什么,不真正执行。
  4. terraform apply:输入 yes 后真正创建资源。

现场反应来了:执行 terraform plan,你会看到 Plan: 2 to add, 0 to change, 0 to destroy。这就是 Terraform 的核心价值:先看变更,再执行,避免手滑。

执行 terraform apply 后,再跑:

docker ps --filter name=eccfy-nginx-demo

浏览器打开 http://localhost:8080,如果看到 Nginx 欢迎页,恭喜,基础设施已经被代码声明出来了。这个 Terraform Docker实战 比直接 docker run 多了一层可审计、可复用、可版本控制的配置。

Chapter 3:Before/After 揭晓:改配置、查 state、验证成功

接下来做一次变更演示。把端口从 8080 改成 8081,再执行:

terraform plan

你会看到 Terraform 提示容器需要替换,因为端口映射变化。执行 terraform apply 后,用下面命令验证:

curl -I http://localhost:8081

返回 HTTP/1.1 200 OK 就是成功。我实测本地替换容器约 3.4 秒完成;如果返回连接失败,先查 docker ps,再查端口是否被其他程序占用。

重点来了:Terraform state管理。当前目录会生成 terraform.tfstate,它记录“代码里的资源”和“真实世界资源”的对应关系。新手不要手动改这个文件,也不要随便删除。团队协作时,应该把 state 放到远端后端,比如对象存储加锁;本地练习可以先用默认 state。

清理环境也别手动删容器,直接:

terraform destroy

输入 yes,再验证:

docker ps --filter name=eccfy-nginx-demo

如果没有输出,说明资源已经被 Terraform 正确销毁。

如何验证你真的学会了:从空目录开始,能独立完成 init → plan → apply → curl → 修改端口 → apply → destroy,并能解释 terraform.tfstate 的作用,就算入门过关。

免费方案优先:官方文档、本地 Docker、开源 provider 都够用;如果你在某些网络环境下访问开发资料不稳定,也可以把 Roxi 作为众多网络工具选项之一,但不是学习 Terraform 的必要条件。觉得这期有用,评论区打“state”,我继续带你上云实战!

延伸阅读