/var/run/docker.sock:在Python CGI脚本中运行docker时,权限被拒绝

/var/run/docker.sock:在Python CGI脚本中运行docker时,权限被拒绝,python,docker,docker-compose,dockerfile,docker-machine,Python,Docker,Docker Compose,Dockerfile,Docker Machine,我正在尝试运行Python CGI脚本,其中需要运行docker映像。 我使用的是Docker版本1.6.2。用户为“www数据”,添加到docker组中 www-data : www-data sudo docker 在机器上,通过www数据,我能够执行docker命令 www-data@mytest:~/html/new$ docker ps CONTAINER ID IMAGE COMMAND CREATED

我正在尝试运行Python CGI脚本,其中需要运行docker映像。 我使用的是Docker版本1.6.2。用户为“www数据”,添加到docker组中

www-data : www-data sudo docker 
在机器上,通过www数据,我能够执行docker命令

www-data@mytest:~/html/new$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
从Python CGI脚本运行docker映像时出现以下错误:

fatal msg="Get http:///var/run/docker.sock/v1.18/images/json: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?" 

此处是否缺少任何内容?

默认安装被拒绝的权限表示您正试图从root以外的用户或不在docker组中的用户访问套接字。您应该能够运行:

sudo usermod -a -G docker $username
在所需的$username上,将其添加到组中。您需要注销并重新登录以使其生效(在现有shell中使用
newgrp docker
,或者如果这是一个外部服务访问docker(如cgi脚本),则重新启动守护程序)


请注意,这样做可以有效地让该用户在您的主机上拥有完全的root访问权限,因此请小心操作。

谢谢!这有助于解决问题。重新启动计算机也可能有助于使更改生效。我还必须运行
sudo chgrp docker/var/run/docker.sock
。@Milanka如果从docker repos安装时发生这种情况,则说明有问题。@BenyaminJafari您注销并重新登录了吗?关于重新启动服务的评论是关于其他守护进程连接到docker的,为了避免混淆,我删除了它。