I recently had the situation where even the simplest docker command:

docker run -it bash

gave this error:

docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: 
Post http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/create: dial unix /var/run/docker.sock: connect: permission denied.
See 'docker run --help'.

The solution for this is actually pretty simple:

  • Add your user to the docker group. Since I was running Ubuntu linux, the default user is also ubuntu and then command is:
  • sudo usermod -aG docker ubuntu
  • And then you have to log out and log back in or u -s ${ubuntu}

Here's an ansible task which you can drop in a playbook to accomplish this:

- name: Update the ubuntu user to be part of the docker group
    name: ubuntu
    shell: /bin/bash
    groups: docker
    append: yes

Verifying this

If you need to validate what groups a user is in then use:

id -nG ubuntu

Note: Thanks to Don Neufeld for teaching me this command; somehow despite N decades of unix experience, I missed the id command. Bizarre.

See Also

Here's a good article from Digital Ocean on this.