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

10 python docker dockerfile docker-compose docker-machine

我正在尝试运行Python CGI脚本,我需要在其中运行docker image.我使用的是Docker 1.6.2版.user是"www-data",它在docker组中添加.

www-data : www-data sudo docker 
Run Code Online (Sandbox Code Playgroud)

在机器上,使用www-data我可以执行docker命令

www-data@mytest:~/html/new$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
Run Code Online (Sandbox Code Playgroud)

从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?" 
Run Code Online (Sandbox Code Playgroud)

这里有什么我想念的吗?

BMi*_*tch 19

默认安装上的权限被拒绝表示您尝试从非root用户或不在docker组中的用户访问套接字.你应该能够运行:

sudo usermod -a -G docker $username
Run Code Online (Sandbox Code Playgroud)

在您想要的$ username上将它们添加到组中.您需要注销并重新登录才能使其生效(newgrp docker在现有shell中使用,或者如果这是一个访问像cgi脚本这样的docker的外部服务,则重新启动守护程序).

请注意,有效地执行此操作会为用户提供对主机的完全root访问权限,因此请务必谨慎.

  • 重新启动计算机也可能有助于实现更改. (3认同)