The Ops Community

Cover image for Running Docker Without Sudo - EC2 server
Moses Itoya
Moses Itoya

Posted on

Running Docker Without Sudo - EC2 server

I was quite comfortable running my docker using sudo, not that I preferred it but I really had no option until I had to run a CI/CD pipeline which throws error as a result of running the commands with sudo. By default, the docker command can only be run by the root user or by a user in the docker group, which is automatically created during Docker’s installation process. If you attempt to run the docker command without prefixing it with sudo or without being in the docker group, you’ll get an output like this:

Output
docker: Cannot connect to the Docker daemon. Is the docker daemon running on this host?.
See 'docker run --help'.
Enter fullscreen mode Exit fullscreen mode

This made me further troubleshoot to get a solution, this article is about my little experience resolving the issue, most especially if you experience this issue running docker on a server.

I ran my docker on an EC2 instance, even after following the commands necessary for me to run docker without using sudo. It turns out I had to reboot my server, and not just exit the terminal and ssh back in to the terminal as a lot of articles I came across advised. Well, that may have worked for others, but it did not for me. If it's on a local terminal, after following the process, you can close your terminal and come back in. The changes would be effected, but it's not so for servers, you have to reboot the server.

Also, I'd like to add that it is important you run docker without sudo especially in a Jenkins Job as it would throw errors as seen below.
docker-jenkins-1

If you want to avoid typing sudo whenever you run the docker command, add your username to the docker group. That being said, the following are steps to run Docker without sudo(I'd still like to emphasize, for EC2 servers or any other cloud provider servers,):

  1. Add your username to the docker group:

    sudo usermod -aG docker ${USER}
    
  2. Apply the new group membership. In my own case, I had to reboot my ec2 server for it to take effect, my server user had no password. If your user has a password, then run su - ${USER}. You'd be prompted to enter your password, do that and the changes would take effect.

  3. Confirm that your user is now added to the docker group by running the command groups. You should now see your user amongts the group.

That's all, you can now go ahead and run docker without sudo. This worked for me and my Jenkins job which failed worked right after the above steps
docker-jenkins

Discussion (0)