Permiso denegado al ejecutar Docker después de instalarlo como Snap

33

Instalé Docker a través de la tienda de software, que indicaba que era un paquete Snap. Supongo que está bien para mí, pero desafortunadamente, cada comando Docker que he probado no funciona:

$ docker info
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.30/info: dial unix /var/run/docker.sock: connect: permission denied

¿Algúna idea de cómo arreglar esto?

Editar: He trabajado en esto por ahora instalando Docker desde los propios repositorios de Docker , lo que también podría funcionar para las personas que exploran esta pregunta en el futuro. Sin embargo, dejo la pregunta abierta para aquellos que quieran poder ejecutarla desde Snap.

Vincent
fuente
Docker instalado desde repositorios oficiales de docker. Docker ya se estaba ejecutando cuando agregué mi usuario al dockergrupo, id -nGno mostró docker y cualquier dockercomando resultó en un error de permiso denegado. Cerrar sesión y volver a iniciarla no funcionó porque el proceso del sistema Docker sigue ejecutándose. Reiniciar el sistema o reiniciar Docker mostró al usuario como parte del grupo Docker y permitió ejecutar comandos Docker. NOTA: 0 rep, no se puede agregar comentario.
Santosh Patel

Respuestas:

33

Esto es de la página de GitHub, ¿intentaste estos pasos exactos:

If you are using Ubuntu Core 16,

Connect the docker:home plug as it's not auto-connected by default:

$ sudo snap connect docker:home

If you are using an alternative snap-compatible Linux distribution ("classic" in snap lingo), and would like to run docker as a normal user:

Create and join the docker group.

$ sudo addgroup --system docker
$ sudo adduser $USER docker
$ newgrp docker

You will also need to disable and re-enable the docker snap if you added the group while it was running.

$ sudo snap disable docker
$ sudo snap enable docker

De Docker snap github

Mike Coleman
fuente
No había visto esa página, así que gracias por el enlace. Dicho esto, como no estoy usando Ubuntu Core, tendría que seguir las addgroupinstrucciones, que creo que se trata de lo que hice, según las otras respuestas. Desafortunadamente, preferiría no tocar más el sistema que funciona actualmente, pero me encantaría escucharlo si alguien más lo intenta y logra hacerlo funcionar.
Vincent
2
deshabilitar / habilitar el docker snap hizo el truco para mí, gracias
Manish Kumar
1
Esto también se aplica a Ubuntu (Desktop) 19.04.
Nick Breen
31

El mensaje de error le dice que su usuario actual no puede acceder al motor de la ventana acoplable, porque le faltan permisos para acceder al zócalo Unix para comunicarse con el motor.

Solución temporal

Use el sudocomando para ejecutar los comandos con permisos elevados cada vez.

Solución permanente (sugerida)

Agregar el usuario actual al dockergrupo. Esto se puede lograr escribiendo

sudo usermod -a -G docker $USER

Debe cerrar sesión y volver a iniciarla para que la pertenencia al grupo surta efecto.

Fuente: techoverflow.net

ADDB
fuente
1
Su Google-fu es mejor que el mío, aparentemente. Lamentablemente, esto no funciona. En primer lugar, el dockergrupo no existía. Entonces primero corrí sudo addgroup dockery luego volví a ordenar tu comando, luego salí y volví a ingresar. Desafortunadamente, el error que se muestra en la pregunta persiste ...
Vincent
2
@ Vincent, no olvidaste que los cambios grupales no tienen lugar de inmediato, ¿verdad? Intente newgrp dockercerrar sesión e iniciar sesión.
ADDB
No, lo siento, olvidé mencionar que - Actualicé mi comentario mientras respondías :) Ejecutar groups vincentda:vincent adm cdrom sudo dip plugdev lpadmin sambashare docker
Vincent
@Vincent solo como referencia, tu docker daemon se inicia, ¿verdad? Prueba sudo /etc/init.d/docker statuso sudo service docker statusprueba esto.
ADDB
Hmm, no creo que funcionen debido a que es un Snap: paste.ubuntu.com/25219172 Dicho esto, ps cax | grep dockerdsí da 31034 ? Ssl 0:05 dockerd.
Vincent
6

Supongo que su nombre de usuario ya está en el grupo acoplable. Para verificar esto, emita el siguiente comando.

id -nG

Si no, debe agregar su usuario al grupo de acopladores mediante el siguiente comando.

sudo groupadd docker
sudo usermod -aG docker $USER

Cuando ejecuta el comando, sudo systemctl start dockercrea un proceso acoplable. Ese proceso de docker contiene dockerdhilo de demonio. El comando también crea un docker.socksocket predeterminado de Unix. El docker.socksocket es escuchado continuamente por el dockerdhilo del demonio. Esto hace que pueda hacer IPC a nivel de núcleo con el docker.pidproceso. Para poder utilizar este zócalo acoplable, debe tener el permiso adecuado del nivel de proceso ( docker.pid) y el nivel de archivo ( docker.sock). Entonces, ejecutar debajo de dos comandos debería resolver su problema. sudo chmod a+rwx /var/run/docker.sock # You can provide just execute permission sudo chmod a+rwx /var/run/docker.pid

Uddhav Gautam
fuente
Solo esto funciona para ubuntu 18.04. Muchas gracias Uddhav Gautam
Sabbir
3
sudo setfacl -m user:your_user_name:rw /var/run/docker.sock

no requiere reiniciar y es más seguro

Nahshon paz
fuente
1

Debe agregar el usuario al grupo Docker ( consulte los documentos oficiales ).

Puede agregar sudodelante del comando o puede agregar el usuario en el dockergrupo mediante el uso de este comando:

sudo usermod -aG docker <USER>

Cierre sesión y vuelva a iniciarla para que su membresía de grupo sea reevaluada.

Heesen Ponnusawmy
fuente
Dado que ese contenido en ese enlace puede desaparecer, agregue los detalles relevantes aquí.
Chai T. Rex
No es necesario, la otra respuesta ya mencionó agregar al usuario al grupo, no ayudó. (Además, no hay razón para que eso ayude para la instalación de Snap, pero no para la instalación regular).
Vincent