超高效,使用Terraform創(chuàng)建Docker鏡像和容器
為了實現(xiàn)自動化操作,Terraform需要明確指定所使用的提供者。因此,在主要的main.tf文件中,需要提供提供者的名稱、源和版本信息。對于Docker,可以在main.tf中使用以下代碼塊。
1 Terraform配置模塊
使用塊和資源創(chuàng)建Terraform腳本。
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 2.21.0"
}
}
}
這是一個Terraform配置模塊,指定了所需的Docker提供者及其版本。
在這個配置中,指定了Terraform代碼需要使用Docker提供者與Docker容器進(jìn)行交互。source參數(shù)指定了提供者代碼的位置,在這種情況下為kreuzwerker/docker GitHub存儲庫。version參數(shù)指定了應(yīng)使用的提供者的最低版本。
圖片
2 提供者模塊
提供者塊配置了指定的提供者,此處為docker。提供者是Terraform用于創(chuàng)建和管理資源的插件。
provider "docker" {}
圖片
3 資源
使用資源塊定義基礎(chǔ)架構(gòu)的組件。資源可以是物理或虛擬組件,如Docker容器,也可以是邏輯資源,如Heroku應(yīng)用程序。
資源塊在塊之前有兩個字符串:資源類型和資源名稱。在此示例中,第一個資源類型是docker_image,名稱為Nginx。
為nginx docker鏡像創(chuàng)建資源塊
resource "docker_image" "nginx" {
name = "nginx:latest"
keep_locally = false
}
為運行nginx的docker容器創(chuàng)建資源塊
resource "docker_container" "nginx" {
image = docker_image.nginx.latest
name = "tutorial"
ports {
internal = 80
external = 80
}
}
圖片
在創(chuàng)建Terraform配置文件(使用.tf擴展名)之后,使用以下Terraform命令來配置和管理基礎(chǔ)架構(gòu):
Terraform init: 通過下載和安裝所需的提供者和模塊、初始化后端并下載必要的插件,初始化新的或現(xiàn)有的Terraform工作目錄。
terraform init
圖片
Terraform plan: 生成執(zhí)行計劃,顯示Terraform將采取哪些操作來達(dá)到配置文件中指定的期望狀態(tài)。該命令還報告將對基礎(chǔ)架構(gòu)進(jìn)行的任何更改。
terraform plan
圖片
圖片
Terraform apply: 執(zhí)行terraform plan生成的執(zhí)行計劃中提出的操作。該命令會配置和提供在配置文件中定義的基礎(chǔ)架構(gòu)。
terraform apply
圖片
圖片
如果未安裝Docker,請使用以下命令:
sudo apt-get install docker.io
sudo docker ps
sudo chown $USER /var/run/docker.sock
使用以下命令檢查是否創(chuàng)建了Docker容器:
docker ps
圖片
瀏覽公共IP地址,會看到nginx的默認(rèn)頁面。
圖片