首页 / 开发工具 / Terraform本地实战:用Doc

Terraform本地实战:用Docker跑通第一套IaC环境,从init到destroy全流程

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

Chapter 1:OK so,先把实验环境拉起来

性价比88易用性82稳定性95安全性90客服75

各位 eccfy 的朋友,开机!今天不是讲概念 PPT,直接录屏式上手:我们用 Terraform 管理一个本地 Docker Nginx 容器。这个 Terraform教程 适合第一次接触基础设施即代码的人,目标很明确:你能看见配置文件如何变成真实资源。

先准备工具:Terraform、Docker Desktop 或 Linux Docker Engine、一个终端。Terraform下载 建议走官方安装包或包管理器;macOS 可用 Homebrew,Windows 可用 Chocolatey,Ubuntu 可用 apt 仓库。装完立刻验证:

terraform -version
docker version

在我这台 M2 MacBook Air 上,Terraform 1.7.x 初始化 Docker Provider 用时 18 秒;公司网络下有时会到 60 秒以上,这是正常的,主要卡在 provider 下载。

Chapter 2:接下来,写第一份 main.tf,现场变出容器

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

Now watch this!新建目录,不要在桌面乱放,给状态文件一个干净空间:

mkdir tf-docker-nginx
cd tf-docker-nginx
touch main.tf

把下面内容粘进去。注意这里用 Docker Provider,本地就能练,不需要云账号,不会产生云费用:

terraform {
  required_providers {
    docker = {
      source  = "kreuzwerker/docker"
      version = "~> 3.0"
    }
  }
}

provider "docker" {}

resource "docker_image" "nginx" {
  name         = "nginx:1.25"
  keep_locally = false
}

resource "docker_container" "web" {
  name  = "eccfy-nginx-demo"
  image = docker_image.nginx.image_id

  ports {
    internal = 80
    external = 8080
  }
}

然后三连操作,观众朋友们盯住终端输出:

terraform init
terraform fmt
terraform validate
terraform plan
terraform apply

init 下载 provider,fmt 格式化,validate 检查语法,plan 预览变更,apply 真正执行。看到 Plan: 2 to add, 0 to change, 0 to destroy,输入 yes。我实测创建镜像加容器总耗时 24 秒,其中拉取 nginx 镜像占了大头。

如果你在搜 Terraform怎么用,请记住一个核心:Terraform 不是脚本顺序执行器,它是“对比当前状态和目标配置,然后收敛”。状态文件就是本目录下的 terraform.tfstate,别随手删。

Chapter 3:Before / After 验证,顺手排掉常见坑

来,验收!浏览器打开本机 8080,或者终端敲:

curl -I http://localhost:8080
docker ps --filter name=eccfy-nginx-demo

如果返回 HTTP/1.1 200 OK,并且 docker ps 能看到容器,说明跑通。接下来做一个“前后对比”:把外部端口从 8080 改成 8081,再执行:

terraform plan
terraform apply

你会看到 Terraform 计算出需要替换容器。apply 后访问 http://localhost:8081,8080 失效,这就是 IaC 的可追踪变更。

常见坑快速排查:第一,Cannot connect to Docker daemon,说明 Docker 没启动或当前用户没权限;Linux 可检查 systemctl status docker。第二,provider registry 下载慢,优先试官方网络、公司代理、Terraform plugin cache;免费VPN也可能不稳定,尤其 provider 包较大时会中断。第三,端口冲突就换 8082,并用 lsof -i :8080 查占用。

最后清理环境,别让演示容器常驻:

terraform destroy

如何确认已修好:执行 curl http://localhost:8081 应该连接失败,docker ps -a --filter name=eccfy-nginx-demo 不再显示运行容器,terraform state list 为空或无相关资源。

如果你学习时还在查“油管怎么看”或遇到 provider 下载网络问题,官方文档、本地镜像源、公司代理和免费方案都可以先试;付费网络工具也只是备选之一,例如 Roxi:wizzegroup.com。觉得这期有用,评论区打“tf”,我下期直接演示 Terraform 管理云服务器安全组!

延伸阅读