
企业级Terraform容器,配备全面的DevOps工具,用于多云基础设施即代码。提供针对AWS、Azure、GCP或全云环境优化的多种版本。

bash# 包含所有云CLI的完整版本(推荐用于开发) docker pull ghcr.io/oorabona/terraform:latest # 基础版本(最小镜像,无云CLI) docker pull ghcr.io/oorabona/terraform:latest-base # AWS专用版本 docker pull ghcr.io/oorabona/terraform:latest-aws # Azure专用版本 docker pull ghcr.io/oorabona/terraform:latest-azure # GCP专用版本 docker pull ghcr.io/oorabona/terraform:latest-gcp
所有版本均包含核心安全和DevOps工具集。区别在于包含的云CLI:
| 版本 | 描述 | 云CLI | 使用场景 |
|---|---|---|---|
| base | 仅包含核心工具 | 无 | 最小镜像,与云无关 |
| aws | AWS优化版 | AWS CLI | 仅AWS基础设施 |
| azure | Azure优化版 | Azure CLI | 仅Azure基础设施 |
| gcp | GCP优化版 | Google Cloud SDK | 仅GCP基础设施 |
| full | 全云版本 | AWS CLI + Azure CLI + Google Cloud SDK + j2cli | 多云环境或开发 |
基础版 (*-base)
包含Terraform、安全扫描、代码检查和文档工具。无云提供商CLI。镜像体积最小。
工具:
AWS版 (*-aws)
包含基础版工具 + AWS CLI,适用于Amazon Web Services基础设施。
附加工具:
Azure版 (*-azure)
包含基础版工具 + Azure CLI,适用于Microsoft Azure基础设施。
附加工具:
GCP版 (*-gcp)
包含基础版工具 + Google Cloud SDK,适用于Google Cloud Platform基础设施。
附加工具:
完整版 (*-full)
包含所有云CLI以及Jinja2模板引擎。推荐用于:
附加工具:
ghcr.io/oorabona/terraform:{version}-{flavor}
示例:
latest 或 latest-full - 最新Terraform,包含所有云工具latest-base - 最新Terraform,无云CLIlatest-aws - 最新Terraform,包含AWS CLI1.10.3-azure - Terraform 1.10.3,包含Azure CLI所有版本均已固定,并自动监控更新:
| 工具 | 版本 | 描述 | 适用版本 |
|---|---|---|---|
| Terraform | (上游最新) | 基础设施即代码工具 | 所有 |
| TFLint | 0.60.0 | Terraform代码检查工具 | 所有 |
| Trivy | 0.69.1 | 安全扫描工具 | 所有 |
| Terragrunt | 0.99.1 | Terraform编排工具 | 所有 |
| terraform-docs | 0.21.0 | 文档生成工具 | 所有 |
| Infracost | 0.10.43 | 云成本估算工具 | 所有 |
| GitHub CLI | 2.86.0 | GitHub自动化工具 | 所有 |
| AWS CLI | 1.44.33 | Amazon Web Services CLI | aws, full |
| Azure CLI | 2.83.0 | Microsoft Azure CLI | azure, full |
| Google Cloud SDK | latest | Google Cloud Platform CLI | gcp, full |
| j2cli | (最新) | Jinja2模板CLI | full |
所有版本均包含:
yamlservices: terraform: image: ghcr.io/oorabona/terraform:latest user: "1000:1000" volumes: - .:/data - ~/.aws:/home/terraform/.aws:ro # AWS凭证(只读) - ~/.azure:/home/terraform/.azure:ro # Azure凭证(只读) - ~/.config/gcloud:/home/terraform/.config/gcloud:ro # GCP凭证(只读) environment: # 从环境变量传递凭证,切勿硬编码 - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY - AWS_DEFAULT_REGION - AZURE_SUBSCRIPTION_ID - AZURE_TENANT_ID - AZURE_CLIENT_ID - AZURE_CLIENT_SECRET - GOOGLE_APPLICATION_CREDENTIALS - TF_VAR_project_id
bash# 初始化和计划 docker run --rm \ -v $(pwd):/data \ -v ~/.aws:/home/terraform/.aws:ro \ ghcr.io/oorabona/terraform:latest-aws \ init docker run --rm \ -v $(pwd):/data \ -v ~/.aws:/home/terraform/.aws:ro \ -e AWS_DEFAULT_REGION \ ghcr.io/oorabona/terraform:latest-aws \ plan # 使用环境凭证应用 docker run --rm -it \ -v $(pwd):/data \ -e AWS_ACCESS_KEY_ID \ -e AWS_SECRET_ACCESS_KEY \ -e AWS_DEFAULT_REGION \ ghcr.io/oorabona/terraform:latest-aws \ apply
完整版包含j2cli,用于基于模板的基础设施:
bash# 创建带.j2扩展名的Terraform模板文件 # 示例:main.tf.j2 resource "aws_instance" "{{ instance_name }}" { instance_type = "{{ instance_type }}" ami = "{{ ami_id }}" } # 创建包含模板变量的config.json { "instance_name": "web-server", "instance_type": "t3.micro", "ami_id": "ami-12345678" } # 处理模板 docker run --rm \ -v $(pwd):/data \ ghcr.io/oorabona/terraform:latest \ bash -c "for f in *.tf.j2; do j2 \$f config.json > \${f%.j2}; done && terraform plan"
bash# 扫描Terraform配置中的错误配置 docker run --rm -v $(pwd):/data ghcr.io/oorabona/terraform:latest \ trivy config . # 详细输出扫描 docker run --rm -v $(pwd):/data ghcr.io/oorabona/terraform:latest \ trivy config --format table --severity HIGH,CRITICAL . # 扫描敏感数据 docker run --rm -v $(pwd):/data ghcr.io/oorabona/terraform:latest \ trivy fs --scanners secret .
bash# 初始化TFLint插件 docker run --rm -v $(pwd):/data ghcr.io/oorabona/terraform:latest \ tflint --init # 检查Terraform文件 docker run --rm -v $(pwd):/data ghcr.io/oorabona/terraform:latest \ tflint # 使用AWS插件检查 docker run --rm -v $(pwd):/data ghcr.io/oorabona/terraform:latest-aws \ tflint --config=.tflint.hcl
bash# 从Terraform模块生成README.md docker run --rm -v $(pwd):/data ghcr.io/oorabona/terraform:latest \ terraform-docs markdown table . > README.md # 生成JSON输出 docker run --rm -v $(pwd):/data ghcr.io/oorabona/terraform:latest \ terraform-docs json . > module.json
bash# 生成成本明细 docker run --rm -v $(pwd):/data ghcr.io/oorabona/terraform:latest \ infracost breakdown --path . # 比较分支间成本差异 docker run --rm -v $(pwd):/data ghcr.io/oorabona/terraform:latest \ infracost diff --path .
bash# 构建特定版本 docker build --build-arg VERSION=latest --build-arg FLAVOR=aws -t terraform:aws . # 构建完整版(默认) docker build --build-arg VERSION=latest -t terraform:full . # 构建基础版 docker build --build-arg VERSION=latest --build-arg FLAVOR=base -t terraform:base .
| 参数 | 描述 | 默认值 |
|---|---|---|
VERSION | Terraform版本 | latest |
UPSTREAM_VERSION | 原始Terraform版本(无后缀) | (从VERSION派生) |
FLAVOR | 要构建的版本 | full |
TFLINT_VERSION | TFLint版本 | 0.60.0 |
TRIVY_VERSION | Trivy版本 | 0.69.1 |
TERRAGRUNT_VERSION | Terragrunt版本 | 0.99.1 |
TERRAFORM_DOCS_VERSION | terraform-docs版本 | 0.21.0 |
INFRACOST_VERSION | Infracost版本 | 0.10.43 |
GITHUB_CLI_VERSION | GitHub CLI版本 | 2.86.0 |
AWS_CLI_VERSION | AWS CLI版本 | 1.44.33 |
AZURE_CLI_VERSION | Azure CLI版本 | 2.83.0 |
GCP_CLI_VERSION | GCP SDK版本 | latest |
| 变量 | 描述 | 默认值 |
|---|---|---|
CONFIGFILE | Jinja2配置文件(仅完整版) | config.json |
TERRAFORM_FLAVOR | 版本标识符 | (构建时设置) |
AWS_ACCESS_KEY_ID | AWS凭证 | (从环境传递) |
AWS_SECRET_ACCESS_KEY | AWS凭证 | (从环境传递) |
AWS_DEFAULT_REGION | AWS区域 | (从环境传递) |
AZURE_SUBSCRIPTION_ID | Azure订阅 | (从环境传递) |
AZURE_TENANT_ID | Azure租户 | (从环境传递) |
AZURE_CLIENT_ID | Azure服务主体 | (从环境传递) |
AZURE_CLIENT_SECRET | Azure服务主体 | (从环境传递) |
GOOGLE_APPLICATION_CREDENTIALS | GCP凭证文件路径 | (从环境传递) |
TF_VAR_* | Terraform变量 | (用户定义) |
| 路径 | 用途 | 说明 |
|---|---|---|
/data | Terraform工作目录 | WORKDIR + VOLUME |
/home/terraform/.aws | AWS凭证 | 只读挂载 |
/home/terraform/.azure | Azure凭证 | 只读挂载 |
/home/terraform/.config/gcloud | GCP凭证 | 只读挂载 |
/.terraform.d | Terraform插件/缓存 | 使用tmpfs提高安全性 |
/.config | 工具配置 | 使用tmpfs提高安全性 |
/tmp | 临时文件 | 使用tmpfs提高安全性 |
/sbin/nologin)切勿在docker-compose.yml或Dockerfile中硬编码凭证:
yaml# 错误 - 绝对不要这样做: environment: AWS_ACCESS_KEY_ID: AKIAIOSFODNN7EXAMPLE # 正确 - 使用环境变量: environment: AWS_ACCESS_KEY_ID: ${AWS_ACCESS_KEY_ID} AWS_SECRET_ACCESS_KEY: ${AWS_SECRET_ACCESS_KEY} # 更好 - 使用只读挂载的凭证文件: volumes: - ~/.aws:/home/terraform/.aws:ro
yamlservices: terraform: image: ghcr.io/oorabona/terraform:latest user: "1000:1000" # terraform:terraform read_only: true tmpfs: - /.terraform.d - /.config - /tmp cap_drop: - ALL security_opt: - no-new-privileges:true volumes: - .:/data:ro # 仅计划时设为只读 - ~/.aws:/home/terraform/.aws:ro environment: # 从环境变量传递凭证,切勿硬编码 - AWS_ACCESS_KEY_ID - AWS_SECRET_ACCESS_KEY - AWS_DEFAULT_REGION
bash# 应用前扫描安全问题 docker run --rm -v $(pwd):/data ghcr.io/oorabona/terraform:latest \ trivy config --severity HIGH,CRITICAL . # 扫描常见Terraform错误 docker run --rm -v $(pwd):/data ghcr.io/oorabona/terraform:latest \ tflint --enable-rule=terraform_deprecated_interpolation # 检查代码中的密钥 docker run --rm -v $(pwd):/data ghcr.io/oorabona/terraform:latest \ trivy fs --scanners secret .
所有工具版本均已固定,并自动监控更新:
| 依赖项 | 版本 | 来源 | 监控 | 许可证 |
|---|---|---|---|---|
| Terraform | upstream | hashicorp/terraform | Docker Hub | MPL-2.0 |
| TFLint | 0.60.0 | terraform-linters/tflint | GitHub Releases | MPL-2.0 |
| Trivy | 0.69.1 | aquasecurity/trivy | GitHub Releases | Apache-2.0 |
| Terragrunt | 0.99.1 | gruntwork-io/terragrunt | GitHub Releases | MIT |
| terraform-docs | 0.21.0 | terraform-docs/terraform-docs | GitHub Releases | MIT |
| Infracost | 0.10.43 | infracost/infracost | GitHub Releases | Apache-2.0 |
| GitHub CLI | 2.86.0 | cli/cli | GitHub Releases | MIT |
| AWS CLI | 1.44.33 | awscli | PyPI | Apache-2.0 |
| Azure CLI | 2.83.0 | azure-cli | PyPI | MIT |
| Google Cloud SDK | latest | N/A | 未跟踪* | Apache-2.0 |
*Google Cloud SDK安装程序始终获取最新版本 - GCP安装程序不支持版本固定。config.yaml中的GCP_CLI_VERSION仅作参考。
terraform/ ├── Dockerfile # 多阶段、多版本构建 ├── docker-entrypoint.sh # 入口脚本 ├── docker-compose.yml # 示例组合 ├── config.yaml # 工具版本配置 ├── version.sh # 上游版本发现 └── build # 带自动版本检测的构建脚本
Dockerfile使用多
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。


探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务