MacOS下Terraform连接Docker daemon失败问题及解决方案
Terraform连接Docker Daemon报错解决记录
问题场景
在MacBook上安装Terraform与Docker Desktop后,跟随HashiCorp快速入门教程操作时,出现Docker连接报错。
错误信息
╷ │ 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状态验证
本地Docker服务运行正常,可正常执行命令:
❯ docker --version Docker version 20.10.20, build 9fdeb9c ❯ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES f6633f3b801e docker/getting-started "/docker-entrypoint.…" 2 minutes ago Up 2 minutes 0.0.0.0:80->80/tcp flamboyant_volhard
main.tf配置内容
terraform { required_providers { docker = { source = "kreuzwerker/docker" version = "~> 2.13.0" } } } provider "docker" {} 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 } }
解决方案
问题根源是Mac版Docker Desktop中,/var/run/docker.sock为符号链接,Terraform的Docker Provider在部分环境下无法正确识别该链接,可通过以下两种方式解决:
方式一:修改Docker Desktop配置
- 打开Docker Desktop偏好设置,进入Docker Engine选项卡
- 在配置JSON中添加字段:
"unix-socket": "/var/run/docker.sock" - 点击Apply & Restart重启Docker服务,重新执行Terraform命令即可正常连接
方式二:显式指定套接字路径到Terraform配置
在provider "docker"块中添加真实套接字路径(替换[你的用户名]为Mac系统实际用户名):
provider "docker" { host = "unix:///Users/[你的用户名]/.docker/run/docker.sock" }
内容的提问来源于stack exchange,提问作者Cat Lover
相关产品推荐
相关产品推荐

