通过Terraform在本地运行docker nginx

前置条件: 1. 装置好windows docker 2. 装置好terraform

装置docker

装置windows docker能够间接登录http://docker.com下载安装即可,docker能够有图形化治理页面装置最新的19.03。为了简化第一次的操作,这里咱们先不通过terraform来装置docker,docker下载安装地址https://www.docker.com/get-started

编写main.tf

terraform {  required_providers {    docker = {      source = "terraform-providers/docker"    }  }}provider "docker" {  host    = "tcp://localhost:2375"}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 = 8000  }}

其中值得注意的是,官网的例子,在provider "docker"中指定的host是通过windows的管道实现的,怕是曾经很多人不会用了。这里须要在docker desktop中设置开启"tcp://localhost:2375",并替换tf文件中的host ="tcp://localhost:2375"。

执行main.tf

笔者应用的vs code,能够间接右键在终端中关上,而后顺次进行以下步骤。

1. 初始化

在终端中执行terraform init。首次执行初始化操作,会有较长的工夫去获取terraform中定义的source信息,在第一次初始化后没有source信息的变动,能够跳过初始化间接开始部署。

2. 部署

在终端中执行terraform plan查看terraform执行打算,在终端中执行terraform apply实现部署。执行部署命令时,会将terraform的plan列出来展现给用户,并由用户确定执行。也能够输出-auto-approve跳过plan。

输出"yes"

装置实现!

查看后果。

大家能够简略的字面了解main.tf中的语义,会在前面的内容中具体介绍,在此次执行中咱们会在本地创立一个nginx的容器,并裸露800端口,咱们拜访localhost:800能够看到由terraform创立的容器能够失常运行。

3. 删除

在终端中执行terraform destroy。则删除由tf创立的docker容器。

附录

在咱们执行terraform -h后看到terraform的相干操作命令和应用办法,整顿给大家,如果你刚刚开始应用terraform,能够从这些根底命令开始,对于其余命令,请应用前浏览terraform的官网文档。

Usage: terraform [-version] [-help] [args]

Common commands:

apply              构建或更改基础设施console            terraform传参的交互式控制台destroy            删除由terraform管制的基础设施env                工作空间治理fmt                将配置文件重写为标准格局get                下载并装置配置模块graph              创立terraform资源的可视化图形import             将现有基础设施导入terraforminit               初始化terraform的工作目录login              获取并保留近程主机的凭据logout             删除近程主机的本地存储凭据output             从状态文件读取输入plan               生成并显示执行打算providers          打印配置中应用的提供程序的树型构造refresh            依据理论资源更新本地状态文件show               查看terraform的状态或打算taint              手动标记污点以便资源从新创立untaint            手动勾销污点validate           验证terraform文件version            terraform版本workspace          工作空间治理

All other commands:

0.12upgrade        重写v0.12之前的模块源代码0.13upgrade        重写v0.13之前的模块源代码debug              debug输入治理force-unlock       手动解除terraform锁定状态push               推送实现代码到企业仓库state              要害状态治理

本文作者:UCloud 容器云产品经理 沈旭