允许除docker组之外的用户使用docker(改变docker执行权限组)

请留意

我是一个大约两天接触Docker的初学者,请注意。(备注2019/1/26:已经收到了一些建议,请也参考一下那些建议。)

如果有需要更正的地方,请留下评论、编辑请求或任何建议。我不希望在世上传播错误的“如何做”指南。

建议您在先阅读评论之后提出修正。

话的经过

在处理Docker时,通常需要成为root用户或加入docker用户组(虽然这里可能还有其他一些选择),但是这样做太麻烦了。我一直在寻找能否直接使用以前使用过的群组设置来像处理docker用户组一样处理hoge群组的成员。

搜索一下,我发现了一篇关于更改Docker执行组的文章,但是我做不到。无论是daemon.json还是dockerd -G也都不起作用,不知道为什么。

解决方案

我的环境是Ubuntu 16.04,Docker版本为18.09.1,构建版本为4c52b90。

请编辑docker.socket以总结。docker.socket的目录应该与docker.service相同,请参考此处。

以下是使用hoge组替代docker组的步骤。

sudo vim <docker.socketの場所> 
#うちのは/lib/systemd/system/docker.socketでした

请以中文进行重新表达

-SocketGroup=docker
+SocketGroup=<hogeのgid>

最终重新启动

sudo systemctl daemon-reload
sudo systemctl restart docker 

解说 (jiě shuō)

为什么能用这个来完成呢?

dockerの通信の仕組み

如果从主机操作系统正常访问的话,Docker的操作通常是通过Unix套接字进行的,就像这个图表上所示的一样。
当没有访问Docker的权限时会出现错误提示,看起来是因为没有访问这个Unix套接字的权限。

请实际查看一下/var/run/docker.socket文件。我想默认情况下,它的用户组应该是docker。所以,您能通过docker用户组访问它。

虽然根据dokcer文档,这个组的设置本应该通过daemon.json或dockerd -G来更改,但在我的环境中,这些方法却无效。

因此,我試圖編輯docker.socket作為最後手段。實際上,我們所做的都指的是同一件事。

我的感受是。

我对此有所感受。

对此,我有所感想。

这让我有所感悟。

我正在编辑一个看起来不应该被修改的文件,感觉有点害怕。但是其他的都不行,只能这样了。

广告
将在 10 秒后关闭
bannerAds