当我尝试使用自动发现运行 filebeat 时,出现以下错误:
退出:自动发现提供程序设置错误:已获得权限 尝试连接到 Docker 守护程序套接字时被拒绝 unix:///var/run/docker.sock:获取 http://%2Fvar%2Frun%2Fdocker.sock/v1.22/containers/json?limit=0:拨号 unix /var/run/docker.sock:连接:权限被拒绝
我从 docker 设置中暴露了 tcp://localhost:2375 上的守护进程。
我检查了我的用户是“docker-users”组的成员。
docker-compose.yml:
filebeat:
image: store/elastic/filebeat:7.3.0
volumes:
- ./config/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- /var/lib/docker/containers/:/var/lib/docker/containers/:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
将
user: root
添加到 docker-compose.yml 修复套接字访问:
filebeat:
image: store/elastic/filebeat:7.3.0
volumes:
- ./config/filebeat.yml:/usr/share/filebeat/filebeat.yml:ro
- /var/lib/docker/containers/:/var/lib/docker/containers/:ro
- /var/run/docker.sock:/var/run/docker.sock:ro
user: root
由于这是在 Windows 下搜索此确切错误消息时显示的第一个答案,因此当从命令行运行它时,这里是使用老式
Dockerfile
解决它的答案:
docker run -u root -v /var/run/docker.sock:/var/run/docker.sock docker_in_docker docker run hello-world
注意添加的
-u root
,它为我解决了这个问题。