一、前提
1.启动docker
docker 的安装
https://blog.csdn.net/axibazZ/article/details/118311181
2.系统中已经安装了Terraform
Terraform的安装
https://blog.csdn.net/axibazZ/article/details/118607496
二、构建Docker基础设施
1.编写的定义Terraform配置的文件
main.tf
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 2.13.0"
}
}
}
provider "docker" {}
resource "docker_image" "nginx" {
name = "nginx:latest"
keep_locally = false
}
resource "docker_container" "nginx" {
image = docker_image.nginx.latest
name = "tutorial"
ports {
internal = 80
external = 8898
}
}
文件中的字段分析:
1> terraform:包含Terraform设置
2>required_providers:包括Terraform将用于提供您的基础设施所需的程序。
3>source:属性定义了一个可选的主机名,命令空间和提供者类型。默认情况下,Terraform从Terraform Registry安装提供程序。例子中,docker提供程序的源定义为kreuzwerker/docker,其实是registry.terraform.io/kreuzwerker/docker 的简写方式。
4>version:是提供程序的版本,可选配置,默认Terraform下载最新版本。
5>provider:用来配置指定的提供程序,本例为docker,提供程序是 Terraform 用于创建和管理资源的插件。可以配置多个。里面可以用来配置一些信息,比如token,access_token,username,password等信息。
6>resource:定义基础架构的组件。可以是物理或者虚拟组件。格式为 resource “资源类型” “资源名称” { },本例中的docker_image 为资源类型,nginx为资源名称。类型的前缀映射到提供者的名称。本例中是docker_image使用的docker提供程序管理资源。资源类型和资源名称共同组成了资源的唯一ID,例如你的docker镜像id就是docker_image.nginx。resource主要用于配置资源的参数,可以是机器大小,VPC ID 等内容。比如我们的docker_container设置镜像源。
2.初始化。到main.tf文件目录下执行初始化命令
terraform init
成功之后,会在当前路径下创建一个隐藏目录和一个锁定文件
.terraform:Terraform下载的docker提供程序会安装在当前工作目录的这个隐藏目录下。
.terraform:该文件指定使用的确切提供程序版本,以便您可以控制何时更新用于项目的提供程序
3.格式化验证、配置验证
#格式化验证
terraform fmt
#配置验证
terraform validate
4.创建基础设施
terraform apply
打印执行计划,并询问是否接受,yes表示接受并继续。
+ 后面的表示将要设置的属性,或者需要创建的资源
创建成功。
5.验证我们安装的nginx容器,使用docker命令查看我们创建的ngxin容器是否正常启动。
docker ps
6.ngxin是否正常运行
7.检查状态
terraform show
三、修改基础设施
1.修改main.tf,这里我们改变外部暴露的端口为9988
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 2.13.0"
}
}
}
provider "docker" {}
resource "docker_image" "nginx" {
name = "nginx:latest"
keep_locally = false
}
resource "docker_container" "nginx" {
image = docker_image.nginx.latest
name = "tutorial"
ports {
internal = 80
external = 9988
}
}
2.重新构建
terraform apply
会打印我们改变的地方,并提示是否接受这个执行计划,yes接受。
打印操作成功
3.查看容器状态,可以看到端口号已经改了。
四、销毁创建的基础设施
terraform destroy
打印提示,与apply时相反,现在是 ‘ - ’,输入yes继续执行,其他则退出。
执行的步骤为删除容器,然后再删除镜像。
五、查看容器,nginx容器已经没有了。
docker ps
好了,入门操作就介绍完了。