如何将当前用户添加到macOS上Docker组中?

7

我正在尝试遵循这篇文章,将当前用户添加到Docker组中:

sudo usermod -aG docker $(whoami)

但是在macOS上没有usermod命令:

-bash:usermod:未找到命令

现在我想知道macOS上是否有与上述命令等效的命令?可能使用dscl

P.S.1. 我已经使用这些说明来设置Docker和docker-machine。

P.S.2. 这个问题不是特定于Visual Studio Code (VSCode),但如果我打开一个新终端并运行eval "$(docker-machine env default)",然后使用code运行VSCode,则问题得到解决。


2
你首先想要做什么?看起来那篇帖子是试图回答一个无法连接docker的问题。 - tblev
1
这仍然是一个X-Y问题,因为在MacOS中运行已弃用的docker-machine安装时没有/var/run/docker.sock。该文件位于VM内部。如果您真的想在没有桌面的情况下运行docker,我建议跳过docker-machine并启动一个Linux VM,按照Linux安装过程进行操作,并配置VS Code以远程访问该VM。 - BMitch
1
你要解决的错误信息就在这篇帖子的第二条评论中。 - BMitch
我认为我需要在VSCode中运行eval "$(docker-machine env <machineName>)"命令。 - Foad S. Farimani
我仍然不理解这个问题的原因。在MacOS中将用户添加到docker组如何帮助访问Docker,当它并没有在MacOS中运行(而是在虚拟机中运行)? - BMitch
显示剩余11条评论
2个回答

15
这个问题,正如其他人所指出的那样,是不相关的。将用户添加到docker组的过程仅在Linux上需要,在那里需要sudo权限来运行Docker命令,如此处所解释的那样。在macOS上,使用docker-machine,这是不必要的。

但如果想要添加一个用户,或者更具体地说是当前用户,到 docker 用户组中,出于任何原因,以下是指示:

  • 使用dscl . list /groups命令列出现有的用户组here
  • 如需创建用户组,如果不存在,请使用命令sudo dscl . create /Groups/<groupName>here
  • 在本讨论的上下文中,<groupName>可以替换为docker
  • 要将用户添加到组中,可以使用命令sudo dseditgroup -o edit -a <userName> -t user <groupName>heresudo dscl . append /Groups/<groupName> GroupMembership <userName>here
  • 可以将<userName>替换为$USER$(whoami)以引用当前用户。
  • 要测试并查看是否已将预期的用户添加到特定组中,可以使用命令dscl . -read /Groups/<groupName> GroupMembership列出所有成员。但是,正如here所解释的那样,它不能保证提供正确的结果。

与用户组几乎没有任何关系的是,Visual Studio Code的另一个问题。在新终端中运行eval "$(docker-machine env <dockerMachineName>)"并从终端内部运行code编辑器,Docker扩展程序可以正常工作。


3
我也不知道为什么,在Mac上运行docker命令时,我必须写sudo。感谢Foad S. Farimani的解释,我解决了这个问题。
我想添加几个可以直接使用的命令。 第一个命令创建docker组。 第二个命令将当前用户添加到docker组中。
sudo dscl . create /Groups/docker
sudo dseditgroup -o edit -a $USER -t user docker

如果您需要不同的内容,请阅读Foad S. Farimani的答案。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接