Terraform and Docker

Terraform needs to be told which provider to be used in the automation, hence we need to give the provider name with source and version. For Docker, we can use this block of code in your main.tf

Task-01: Create a Terraform script with Blocks and Resources

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

Note: kreuzwerker/docker, is shorthand for registry.terraform.io/kreuzwerker/docker.

Provider Block

The provider block configures the specified provider, in this case, docker. A provider is a plugin that Terraform uses to create and manage your resources.

provider "docker" {}

Resource

Use resource blocks to define components of your infrastructure. A resource might be a physical or virtual component such as a Docker container, or it can be a logical resource such as a Heroku application.

Resource blocks have two strings before the block: the resource type and the resource name. In this example, the first resource type is docker_image and the name is Nginx.

Task-02: Create a Resource Block for an Nginx Docker image

Create a resource Block for an nginx docker image

  resource "docker_image" "nginx_image" {
name = "nginx"
keep_locally = false
}

Create a resource Block for running a docker container for Nginx

resource "docker_container" "nginx_container" {
image = docker_image.nginx_image.name
name = "nginx_container"

ports {
internal = 80
external = 80
}
}

Note: In case Docker is not installed

sudo apt-get install docker.io
sudo docker ps
sudo chown $USER /var/run/docker.sock

Now the terraform configuration file is created, So we will initialize the terraform using the terraform init command in the current directory, downloads required plugins, and sets up the backend.

terraform init

Run terrafrom validate to validate the files.

terraform validate

Now execute the terraform plan command which will create an execution plan by comparing the desired state in the configuration to the current state of the infrastructure.

terraform plan

Apply the Terraform configuration to create and start the Docker container.

terraform apply

After Terraform completes, we can verify that the Docker container is running by checking the Docker processes.

docker ps

Execute the terraform destroy so it will prompt for confirmation and then proceeds to delete the resources, reverting the infrastructure to its pre-Terraform state.

Thank you for reading this blog. If you found this blog helpful, please like, share, and follow me for more blog posts like this in the future.

— Happy Learning !!!

Let’s connect !!!

Linkedin

Medium

Github

Mail