Python docker py连接被拒绝

Python docker py连接被拒绝,python,docker,dockerpy,Python,Docker,Dockerpy,我在使用Python从客户端访问docker守护程序时遇到问题。我通过命令启动了一个docker守护进程 sudocker-d&,输出为[1]4894。然后,我尝试使用作为root用户从python获取的代码从python访问守护进程 from docker import Client cli = Client(base_url='unix://var/run/docker.sock') cli.containers() 这给了我一个错误: requests.exceptions.Connec

我在使用Python从客户端访问docker守护程序时遇到问题。我通过命令启动了一个docker守护进程
sudocker-d&
,输出为
[1]4894
。然后,我尝试使用作为root用户从python获取的代码从python访问守护进程

from docker import Client
cli = Client(base_url='unix://var/run/docker.sock')
cli.containers()
这给了我一个错误:

requests.exceptions.ConnectionError: ('Connection aborted.', error(111, 'Connection refused'))
我也试过了

cli = Client(base_url='tcp://127.0.0.1:4894') 

但它给了我同样的错误

似乎/var/run/docker.sock文件的权限不正确。由于docker守护进程是以root用户身份启动的,因此权限可能会受到限制


如果您更改权限以允许其他用户访问它,您应该会获得更大的成功(例如o=rwx)。

问题确实在于
/var/run/docker.sock
的权限不正确。 要修复它,您需要授予当前用户对此文件的访问权限

但是,在Linux上,授予
o=rwx
权限给
/var/run/docker.sock
是非常危险的,因为它允许系统上的任何用户和服务以root用户身份运行命令。实际上,访问
/var/run/docker.sock
意味着对机器的完全root访问。看

一种不太危险的方法是创建组
docker
,并将当前用户添加到此组。看

但是,这种方法仍然存在潜在的危险,因为它在不使用sudo提供的保护(即,不时询问用户密码并记录sudo调用)的情况下为当前用户提供了完全的root访问权限

另见


(不幸的是,我无法发表评论,因此我写下我的评论作为回答。)

当您运行
sudo docker-d
而不运行时&您看到了什么?@padraiccningham我看到了
2015/04/17 17 17:36:33 docker守护进程:1.2.0 fa7b24f;execdriver:native;graphdriver:[e7234094]+作业serveapi(unix:///var/run/docker.sock)[信息]在unix上侦听HTTP(/var/run/docker.sock)2015/04/17 17 17:36:33找到pid文件,请确保docker未运行或删除/var/run/docker.pid
当运行
sudo docker-d
时,如果您确实希望通过TCP使用套接字,则在以root用户身份启动进程时,可能需要检查套接字的权限。谢谢。我尝试了此操作,但也出现了相同的错误。您可以检查/var/run/docker.sock的权限?排列是
srw-rw--
。我使用了
chomd o=rwx-docker.sock
。我在运行代码时遇到了另一个错误:
docker.errors.apieror:404客户端错误:找不到(“客户端和服务器没有相同的版本(客户端:1.17,服务器:1.14)”)
工作得很好!