本文由 简悦 SimpRead 转码, 原文地址 blog.csdn.net
背景
最近,有些项目是基于 docker 写的。但是 docker 是需要 root 权限的,如果没有 root 权限的普通用户将没有办法操作 docker。下面给出两个修改的方法,来完成普通用户的操作的请求。
解决办法
一. 赋予普通用户 root 权限
需要修改:/etc/sudoers
ruby
# 现在是不可更改的,需要调整权限:chmod 0755 sudoers (需要root权限的)
root@SRV252:/etc# ll sudoers
-r--r----- 1 root root 815 Feb 23 13:06 sudoers
将 sudoers 文件中的,以下内容进行修改
ini
# User privilege specification
root ALL=(ALL:ALL) ALL
name1 ALL=(ALL:ALL) ALL # 使用sudo时,仍需要密码的
name2 ALL=(ALL:ALL) NOPASSWD: ALL # 使用sudo时候,不要密码(免密的)
普通用户可以使用 docker 了
二. 添加普通用户到 docker 组
docker 安装之后默认会创建 docker 组,docker 组拥有读取套接字权限,因此将该普通用户加入 docker 组,该组下所有用户有访问 unix 套接字权限,最后刷新用户的初始组即可。
查看是否有 docker 用户
bash
test@ubuntu:~$ sudo cat /etc/group |grep docker
docker:x:999: # 表示存在
如果没有需要手动增加
sudo groupadd docker
查看 /var/run/docker.sock 的属性
arduino
ll /var/run/docker.sock
srw-rw---- 1 root root 0 Oct 29 22:20 /var/run/docker.sock
如果/var/run/docker.sock
的用户组不是docker
,而是root
需要使用chgrp
修改。
bash
chgrp docker /var/run/docker.sock
将普通用户test添加至 docker 组
bash
# 添加
test@:~$ sudo gpasswd -a test docker
Adding user test to group docker
# 查看,此时不在,需要刷新
test@ubuntu:~$ id
uid=1002(test) gid=1002(test) groups=1002(test)
# 刷新
test@ubuntu:~$ newgrp docker