Corregir error ‘permission denied’ en linux al intentar ejecutar Docker sin sudo

Para este post se asume que ya has instalado Docker satisfactoriamente

Al instalar Docker Community Edition o Docker-CE, te darás cuenta que al intentar ejecutar el comando docker en tu terminal te aparece un error parecido este:

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.38/containers/json: dial unix /var/run/docker.sock: connect: permission denied

Como puedes leer esto se debe a que tu usuario, el usuario con el cual estas intentando ejecutar el comando, no posee los permisos para hacerlo.

Solución

1.- Crea un grupo de nombre docker

$ sudo groupadd docker

2.- Agrega a tu usuario al grupo anteriormente creado

$ sudo usermod -aG docker $USER

3.- Cierra sesión con tu usuario y vuelve a iniciarla para que el nuevo grupo puede ser cargado en la información de tu usuario

  • Si estás en una maquina virtual puede que sea necesario que la reinicies
  • Si estás en un escritorio gráfico tipo x-windows es probable que necesites salir y volver a entrar para que los cambios tomen efecto

4.- Comprueba que puedas usar docker sin sudo

$ docker run hello-world

El comando anterior descarga una imagen de prueba y corre un contenedor a partir de ella. Al correr este contenedor muestra una serie de mensajes informativos y luego termina.

Si ya habías usado sudo anteriormente

Si habías ejecutado el comando docker con sudo antes de agregar tu usuario al grupo docker como fue indicado arriba, podrías ver el siguiente error:

WARNING: Error loading config file: /home/user/.docker/config.json - stat /home/user/.docker/config.json: permission denied

el cual indica que el directorio ~/.docker/ fue creado con permisos equivocados por el uso de sudo.

Para solucionar esto tienes dos alternativas:

  1. Puedes remover todo el directorio ~/.docker/. La próxima oportunidad que ejecutes el domando docker creará el directorio automáticamente con una configuración por defecto, esto evidentemente eliminará las configuraciones anteriormente almacenadas.
  2. Puedes cambiar el propietario y permisos del directorio~/.docker/ con los siguientes comandos:
$ sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
$ sudo chmod g+rwx "/home/$USER/.docker" -R

 

Fuente: docs.docker.com