🐡
Cannot connect to the Docker daemon at unix:///var/run/docker.sock
エラー発生箇所
エラー発生箇所は、下記の「Terraform の AWS の Tutorial」内です。
terraform インストール後に、terraform を利用して、Docker Desktop 上に nginx のコンテナをデプロイするところでエラー発生した。
エラー内容
Tutorial の記載通り、下記のmain.tf
ファイルを用意して、
main.tf
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
version = "~> 3.0.1"
}
}
}
provider "docker" {}
resource "docker_image" "nginx" {
name = "nginx"
keep_locally = false
}
resource "docker_container" "nginx" {
image = docker_image.nginx.image_id
name = "tutorial"
ports {
internal = 80
external = 8000
}
}
terraform apply
コマンドを実行すると、Docker daemon へ接続不可(unix:///var/run/docker.sock が存在しない?)な旨のエラーが発生した。
<user>@<hostname> learn-terraform-docker-container % terraform apply
╷
│ Error: Error pinging Docker server: Cannot connect to the Docker daemon at unix:///var/run/docker.sock. Is the docker daemon running?
│
│ with provider["registry.terraform.io/kreuzwerker/docker"],
│ on main.tf line 10, in provider "docker":
│ 10: provider "docker" {}
│
╵
Docker Desktop は起動中だったが、ls -la /var/run/docker.sock
を実行してみると、確かにdocker.sock
ファイルが存在しない様子。
エラー解決方法
まず、docker context ls
コマンドを実行し、docker.sock
ファイルのパスを確認する。
<user>@<hostname> learn-terraform-docker-container % docker context ls
NAME TYPE DESCRIPTION DOCKER ENDPOINT KUBERNETES ENDPOINT ORCHESTRATOR
default moby Current DOCKER_HOST based configuration unix:///var/run/docker.sock
desktop-linux * moby unix:///Users/<user>/.docker/run/docker.sock
そして、判明したdocker.sock
のパスをmain.tf
ファイルへ、明示的に設定追加する。
結果、エラー解消されました。
main.tf
〜省略〜
provider "docker" {
# host = "unix:///var/run/docker.sock"
host = "unix:///Users/<user>/.docker/run/docker.sock"
〜省略〜
Discussion