Docker:非root用户启动操作docker

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Docker:非root用户启动操作docker相关的知识,希望对你有一定的参考价值。

参考技术A 摘要: docker , linux

一般都是用root用户启动和操作docker,当是普通用户运行容器启动项目时报错没有权限

docker守护进程后台启动时,需要读取Unix套接字 /var/run/docker.sock ,这个文件root所有,docker用户组可操作,因此普通非docker组的用户没有权限访问

类似的mysql客户端也可以使用socket进行连接,文件在/var/run/mysqld/mysqld.sock

默认是777权限,如果改成770,则非root用户或者非mysql组用户也将无法连接MySQL

退出root用户,普通用户无法报错无法通过socket连接

本质上还是使用root运行docker,只是在启动的时候可以以root用户启动docker,为了避免每次启动需要输入密码,需要给普通用户sudo权限以及可以免密码方式登录。
在/etc/sudoers文件中设置免密码

此时再使用sudo运行docker即可,在其他shell脚本中docker run前面增加sudo

如果不使用sudo则无权限操作docker

docker安装之后默认会创建docker组,docker组拥有读取套接字权限,因此将该普通用户加入docker组,该组下所有用户有访问unix套接字权限,最后刷新用户的初始组即可。
先查看是否有docker用户,如果没有需要手动增加

如果/var/run/docker.sock的用户组不是docker而是root需要使用 chgrp 修改一下

将普通用户添加到docker组

此时查看test用户所在的组

发现还是没有docker组,使用 newgrp 刷新以下用户的初始组

此时再次查看用户的组以已经出现docker

然后直接以用户操作docker即可

或者不使用newgrp直接重新登录即可

gpasswd是linux下组管理工具,用户添加用户到组和从组中删除用户,必须是sudo执行

测试删除和添加test用户于docker组

此时退出终端重新登录则test的docker组消失,再添加进来

添加之后在当前终端不能立刻生效,需要使用newgrp将新增加的组添加到用户组的集合中刷新,立即生效

以后退出登录后新登录进来用户的用户组都会更新生效

以上是关于Docker:非root用户启动操作docker的主要内容,如果未能解决你的问题,请参考以下文章

使用非root用户时,Docker节点权限被拒绝

Docker使用非root用户

docker 非root用户 修改mount到容器的文件出现“Operation not permitted”

Ubuntu添加非root用户到Docker用户组

docker容器基础命令

docker相关操作(以redis为例子)