在使用docker的时候需不需要获取root权限?答:需要。没有root权限的普通用户将没有办法操作docker;如果没有root权限,可以利用sudo获取管理员权限,运行docker命令,或者将当前用户加入到docker用户组中,那么当前用户就有权限访问“Unix socket”,进而也就可以执行docker相关命令。
本文适用于linux7.3系统、docker19.03版、Dell G3电脑。
在使用docker的时候需不需要获取root权限?
答:需要。
解决非root用户没有权限运行docker命令的问题,方法如下:
方法1:
使用sudo获取管理员权限,运行docker命令,这个方法在通过脚本执行docker命令的时候会有很多局限性
方法2:
docker守护进程启动的时候,会默认赋予名为docker的用户组读写Unix socket的权限,因此只要创建docker用户组,并将当前用户加入到docker用户组中,那么当前用户就有权限访问Unix socket了,进而也就可以执行docker相关命令
sudo groupadd docker #添加docker用户组
sudo gpasswd -a $USER docker #将登陆用户加入到docker用户组中
newgrp docker #更新用户组
扩展知识:
docker的守护进程是root权限的,即运行docker守护进程的用户仍然是root。我们需要做如下修正:
也就是我们要在非root用户下安装docker,并启动docker守护进程,这种安装及运行模式被称为“RootLess”模式。可以安装但是存在先决条件:“RootLess”模式是在 Docker Engine v19.03 中作为实验性功能引入的,从 Docker Engine v20.10 开始提供正式使用。
前置条件
需要安装newuidmap和newgidmap工具shadow-utils,即配置上文中的/etc/subuid和/etc/subuid需要这两个工具的支持。安装之前使用yum list installed shadow-utils确认下是否已经安装过或者操作系统自带,如果存在就不要安装了,但第三步的配置是需要的。
第一步:添加一个软件包安装源,该源下面包含shadow-utils46-newxidmap
curl -o /etc/yum.repos.d/vbatts-shadow-utils-newxidmap-epel-7.repo https://copr.fedorainfracloud.org/coprs/vbatts/shadow-utils-newxidmap/repo/epel-7/vbatts-shadow-utils-newxidmap-epel-7.repo
第二步: yum install -y shadow-utils46-newxidmap
第三步:在/etc/sysctl.conf文件中修改系统参数user.max_user_namespaces = 28633,修改完成之后执行sysctl --system命令让参数生效。
echo user.max_user_namespaces=28633 >> /etc/sysctl.d/userns.conf;
sudo sysctl -p /etc/sysctl.d/userns.conf;
echo user.max_user_namespaces=28633 >> /etc/sysctl.d/userns.conf;
sudo sysctl -p /etc/sysctl.d/userns.conf;
该参数默认值是0,即不允许操作系统用户存在subuid空间。上面的操作完成之后使用sysctl --all --pattern user_namespaces命令验证修改的结果。
以上就是关于使用docker的时候需不需要获取root权限的全部解析,感谢观看!
我来说两句