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的主要内容,如果未能解决你的问题,请参考以下文章