web-dev-qa-db-fra.com

/var/run/docker.sock: autorisation refusée lors de l'exécution de docker dans Python CGI

J'essaie d'exécuter Python Script CGI à l'intérieur duquel j'ai besoin d'exécuter l'image Docker. J'utilise Docker version 1.6.2. L'utilisateur est "www-data", qui est ajouté dans le groupe Docker.

www-data : www-data Sudo docker 

Sur la machine, avec www-data je peux exécuter des commandes docker

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

J'obtiens l'erreur suivante lors de l'exécution de l'image docker de Python CGI:

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

Y a-t-il quelque chose qui me manque ici?

10
user5154816

L'autorisation refusée sur une installation par défaut indique que vous essayez d'accéder au socket à partir d'un utilisateur autre que root ou qui n'est pas dans le groupe Docker. Vous devriez pouvoir exécuter:

Sudo usermod -a -G docker $username

sur votre nom d'utilisateur $ souhaité pour les ajouter au groupe. Vous devrez vous déconnecter et vous reconnecter pour que cela prenne effet (utilisez newgrp docker dans un shell existant, ou redémarrez le démon s'il s'agit d'un service externe accédant à docker comme vos scripts cgi).

Notez que cette opération donne à cet utilisateur un accès root complet sur votre hôte, alors faites-le avec soin.

19
BMitch