By default, Docker Daemon is a root user, and it owns the Unix socket. So, in Linux, unprivileged users can not use Docker directly without sudo user rights and get the “docker: Permission Denied” error. To execute the “docker” command directly without sudo user rights, the user first needs to add the user to the Docker group:
How to Add User to Docker Group?
Docker holds the root privileges, therefore any user that does not have root rights is unable to run the “docker” commands directly. They have to use “sudo” in front of every Docker command. To avoid using “sudo” to run Docker, the user first needs to check if Docker is added to the root group. Then, the user needs to add the unprivileged user to the Docker group. Follow the below demonstration to add the user to the Docker group.
Step 1: Check Docker Permission
Launch the Linux terminal through the “CTRL+ALT+T” shortcut key. Then, use the below command to check if Docker exists in the root group or not. During installation, Docker is automatically added to the root group. But if in case if Docker is not added to the root group, the user needs to add it manually:
grep docker /etc/group
Here, no output shows that Docker is not automatically added to the root group:
Step 2: Add Docker to the Root User Group
To add the Docker to the root user group, execute the “groupadd docker” command with “sudo” rights:
sudo groupadd docker
Step 3: View Docker Permissions
Now, again check if Docker is added to the root group and get root permissions:
grep docker /etc/group
Here, now docker is added as a root user, but the current user “hands-on” is still not added to the Docker group:
Step 4: Add User to Docker Group
To add the non-root user to the Docker group to use the “docker” command without sudo, utilize the “usermod -aG docker <user-name>/$USER” command with “sudo” rights:
sudo usermod -aG docker $USER
Step 5: Verification
After adding the user to the Docker group, again check Docker privileges:
grep docker /etc/group
The output should be “docker:x:<any reference-no>:<user-name>” as shown below:
Step 6: Make Changes Effective
Now, evaluate the Linux group membership. For this purpose, either close the terminal and relaunch it or the user may need to run the “newgrp docker” command:
newgrp docker
This operation may require rebooting the system. For this purpose, simply run the “reboot” command:
reboot
Step 7: Run Docker Command
After restarting the system, directly execute the “docker” command without the “sudo” keyword and check if the command is executed or not:
docker run hello-world
For demonstration, we have executed the “docker run” command to execute the demo container. We have effectively executed the “docker” command without the “sudo” user which means we have successfully added the non-root user to the Docker group:
Note: Sometimes, while running the “docker” command directly, the user may get a warning “error loading config file:/home/user/.docker/config.json”. This is due to the user executing the “docker” with the “sudo” keyword initially. After adding the user to Docker group, the changes may not be updated in the “~/.docker/” directory. To fix the stated warning, follow the below section.
Bonus Tip: How to Resolve “Error loading config file: /home/user/.docker/config.json –
stat /home/user/.docker/config.json: permission denied” Warning in Docker
To fix the stated warning message in Docker, the user may need to remove the “~/.docker/” directory. On system or docker restart, this directory will be automatically recreated with updated information, or the user needs to update the “~/.docker/” manually. Follow any of the below-given solutions to fix the given issue.
Solution 1: Remove “.docker” Directory
To fix the “Warning: error loading config file….” warning in Docker, remove the “~/.docker/” hidden directory using the “rm -rf” command. This will recursively remove the specified directory:
sudo rm -rf ~/.docker/
After that, either restart the system or restart the Docker Daemon using the “systemctl” command line utility:
sudo systemctl restart docker
This will fix the stated warning, but the user may also lose some customized settings and need to log in to the Docker registry using the “docker login” command:
docker login
This will ask you to type the login credentials. Type in the credentials and press Enter:
Solution 2: Change “.docker” Directory Ownership and Permissions
Another possible solution is to manually add the current or not-root user to the “.docker” directory using the below command:
sudo chown "$USER":"$USER" /home/"$USER"/.docker -R
Now, allocate the read and write permissions to the group owner for the specified directory “$HOME/.docker” through the given command:
sudo chmod g+rwx "$HOME/.docker" -R
We have covered the approach to add the non-root user to the Docker group and fix the warning that may occur after adding the user to Docker.
Conclusion
To add the user to the Docker group, first, check if Docker is already added to the root user group. After that, if docker is not added then add it using the “sudo groupadd docker” command. After that, add the non-root user to the Docker group to run the “docker” commands without the “sudo” keyword using the “sudo usermod -aG docker $USER/<user-name>” command. We have also fixed the warning that may occur after adding the user. This write-up has discussed the method to add the user to the Docker group.