16

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.

16
  • 2
    What are you trying to do to begin with? Looks like that post was an attempt to answer an issue with not being able to connect with docker. Commented Dec 15, 2021 at 19:44
  • @tblev My side issue is that I see this error message on Microsoft Studio Code. But I hope to resolve this issue too. Commented Dec 15, 2021 at 19:51
  • You didn't install docker on your MacOS machine, you installed it in a VM that docker no longer supports and apparently VS code isn't designed to use. The install steps for Docker Desktop for Mac are available at docs.docker.com/desktop/mac/install Commented Dec 15, 2021 at 20:50
  • 1
    This is still an X-Y problem because there's no /var/run/docker.sock in MacOS when you run the deprecated docker-machine install. That file is inside of the VM. If you really want to run docker without Desktop, I'd skip docker-machine and spin up a linux VM, follow the linux install process, and configure VS code to remotely access that VM. Commented Dec 15, 2021 at 20:54
  • 1
    It's right in the error message you're trying to solve, second comment to this post. Commented Dec 15, 2021 at 21:01

2 Answers 2

21

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.

Sign up to request clarification or add additional context in comments.

3 Comments

Is this answer up to date? docker-machine got deprecated shortly after this answer was written...
@Foad docker-machine doesn't exist anymore and with the only remaining alternative, namely Docker Destkop, other users cannot access the docker socket by default, so this question makes much more sense today. But it seems that on MacOS (at least), a docker group is not created and permissions to the socket are handled another way, which I haven't figured out as of now.
so, why running docker on macos doesn't need any sudo privileges while linux need
6

I also had to write sudo on macOS to run docker commands (I don't know why). Thanks to Foad's explanation, I fixed it.

I just want to add commands which are ready for use. The first one creates a docker group. The second one adds the current users to the docker group.

sudo dscl . create /Groups/docker sudo dseditgroup -o edit -a $USER -t user docker 

If you need something different, read Foad S. Farimani's answer.

1 Comment

Thanks for providing the minimized version.

Start asking to get answers

Find the answer to your question by asking.

Ask question

Explore related questions

See similar questions with these tags.