docker - 在“terraform apply”上 ping docker 服务器时出错
问题描述
我正在做 terraform 教程并达到执行的步骤terraform apply
。
执行该命令后,我收到此错误:
WARNING: cgroup v2 is not fully supported yet, proceeding with partial confinement
Error: Error pinging Docker server: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/_ping": dial unix /var/run/docker.sock: connect: permission denied
on main.tf line 9, in provider "docker":
9: provider "docker" {
这是我的配置main.tf
文件中的内容:
terraform {
required_providers {
docker = {
source = "kreuzwerker/docker"
}
}
}
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
}
}
我尝试添加host = "unix:///var/run/docker.sock"
提供程序功能,但仍然出现该错误。我的电脑中也配置了 docker 和 NGINX。
有谁知道是什么原因造成的?
解决方案
当您使用您的用户 ID 运行docker run hello-world时,您将看到与您遇到的相同的错误。发生这种情况是因为您的用户无权执行 docker 的命令。请执行以下步骤。
cat /etc/group
--> 如果您正确安装了 docker,应该有一个可用的 docker 组。- 将您的用户 ID 添加到 docker 组
sudo usermod -aG docker $User_Name
- 从会话中注销并再次登录
docker run hello-world
--> 现在应该可以正常运行了。
现在尝试再次应用 Terraform,一切都会好起来的。
推荐阅读
- javascript - Javascript - 自动下载资源
- javascript - 接收默认推送通知 Firebase Cloud 消息 对于 Web
- css - 在文本区域 Bootstrap 4 旁边显示图像
- windows - Docker“hello-world”给出“进程无法访问该文件,因为它正被另一个进程使用”
- javascript - 在父组件 componentDidMount 完成后渲染子组件
- asp.net - 由 Facebook React 代码组成的节点模块可以在 ASP.NET Core 中工作吗?
- javascript - 我的组件如何在不重复代码的情况下在另一个组件中工作?
- laravel - Laravel 获取 JSON 列 MariaDB 语法错误
- css - 无法以角度获取openlayers css
- linux - 如何查找具有特定名称的所有子目录并删除其内容(而不是删除目录本身)