はじめに
Terraform
を触っていたら、Docker Provider
なるものがあることを見つけました。
面白そうだったので触ってみたメモを残しておきたいと思います。
Docker Providerとは
Docker Provider
はDockerコンテナやイメージとやり取りをするためのProviderです。
The Docker provider is used to interact with Docker containers and images. It uses the Docker API to manage the lifecycle of Docker containers. Because the Docker provider uses the Docker API, it is immediately compatible not only with single server Docker but Swarm and any additional Docker-compatible API hosts.
Use the navigation to the left to read about the available resources.
// DeepL翻訳
Dockerプロバイダは、Dockerコンテナやイメージとやり取りするために使用されます。Docker APIを使用してDockerコンテナのライフサイクルを管理します。DockerプロバイダはDocker APIを使用しているため、シングルサーバDockerだけでなく、Swarmやその他のDocker互換APIホストともすぐに互換性があります。
tfファイルの記述
# main.tf terraform { required_providers { docker = { source = "kreuzwerker/docker" version = "~> 3.0.1" } } } provider "docker" { host = "npipe:////.//pipe//docker_engine" } # Pulls the image resource "docker_image" "nginx" { name = "nginx:latest" keep_locally = false } # Create a container resource "docker_container" "tutorial" { image = docker_image.nginx.image_id name = "tutorial" # -p 8000:80 ports { internal = 80 external = 8000 } }
Terraformの実行
Terraformコマンドを実行する際には、カレントディレクトリ直下の.tf
が実行されるので注意してください。カレントディレクトリに含まれる.tf
ファイル全てに対してではありません。
# .tfファイルが直下にあるフォルダへ移動 $ cd <your_project_folder> # 初期化 $ terraform init Initializing the backend... Initializing provider plugins... - Reusing previous version of kreuzwerker/docker from the dependency lock file - Using previously-installed kreuzwerker/docker v3.0.2 Terraform has been successfully initialized! # 実行 $ terraform apply ... docker_image.nginx: Creating... docker_image.nginx: Creation complete after 6s [id=----nginx:latest] docker_container.tutorial: Creating... docker_container.tutorial: Creation complete after 0s [id=----] Apply complete! Resources: 2 added, 0 changed, 0 destroyed.
結果確認
# Docker Container一覧 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 8010e5783101 2383c216ef35 "/docker-entrypoint.…" About a minute ago Up About a minute 0.0.0.0:8000->80/tcp tutorial # Docker Image一覧 $ docker images REPOSITORY TAG IMAGE ID CREATED SIZE nginx latest 2383c216ef35 10 days ago 188MB
後片付け
pullしてきたDockerイメージや作成したコンテナを削除するには、以下のコマンドを打てば一発で消えます。
$ terraform destroy