/var/run/docker.sock: permission denied while running docker within Python CGI script

user5154816 picture user5154816 · Nov 30, 2016 · Viewed 14.6k times · Source

I am trying to run Python CGI script inside which I need to run docker image. I am using Docker version 1.6.2. user is "www-data", which is added in docker group.

www-data : www-data sudo docker 

On machine, with www-data I am able to execute docker commands

www-data@mytest:~/html/new$ docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES

I am getting following error while running docker image from Python CGI script:

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?" 

Is there anything I am missing here?

Answer

BMitch picture BMitch · Nov 30, 2016

Permission denied on a default install indicates you are trying to access the socket from a user other than root or that is not in the docker group. You should be able to run:

sudo usermod -a -G docker $username

on your desired $username to add them to the group. You'll need to logout and back in for this to take effect (use newgrp docker in an existing shell, or restart the daemon if this is an external service accessing docker like your cgi scripts).

Note that doing this effectively gives that user full root access on your host, so do this with care.