Search code examples
macosdockerdocker-machine

How to add the current user to the Docker group on macOS?


I am trying to follow this post, adding the current user to the Docker group:

sudo usermod -aG docker $(whoami)

but of course, there is no usermod command on macOS:

-bash: usermod: command not found

Now I was wondering if there is an equivalent of the above command on macOS? Probably using dscl?

P.S.1. I have used these instructions to set up Docker and docker-machine.

P.S.2. This question is not about Visual Studio Code (VSCode) in particular, but if I open a new terminal and run eval "$(docker-machine env default)" and then run VSCode with code the problem is solved.


Solution

  • This question, as others have also pointed out, is irrelevant. The process of adding a user to the docker group is only necessary on Linux where sudo privileges are required to run Docker commands, as explained here. On macOS, and using docker-machine, that is unnecessary.


    But if one wants to add a user, or more specifically the current user, to the docker user group, for whatever reason, here are the instructions:

    • List the existing user groups with dscl . list /groups from here
    • To create a user group, if it doesn't exist use the command sudo dscl . create /Groups/<groupName> from here.
    • In the context of this discussion the <groupName> could be replaced with docker.
    • To add a user to a group one can use the command sudo dseditgroup -o edit -a <userName> -t user <groupName>. from here or sudo dscl . append /Groups/<groupName> GroupMembership <userName> from here.
    • One can replace the <userName> with $USER or $(whoami) to refer to the current user.
    • To test and see if the expected user has been added o the specific group one can use the command dscl . -read /Groups/<groupName> GroupMembership to list all the remembers. However, it is not guaranteed to deliver the correct result, as explained here.

    And the another issue with the Visual Studio Code, also has barely anything to do with the user groups. By running the eval "$(docker-machine env <dockerMachineName>)" in a new terminal, and running the code editor from inside the terminal, the Docker extension works just fine.