docker不用root权限也能执行-普通用户的权限设置

背景

最近,有些项目是基于docker写的。但是docker是需要root权限的,如果没有root权限的普通用户将没有办法操作docker。下面给出两个修改的方法,来完成普通用户的操作的请求。

解决办法

1. 赋予普通用户root权限

  • 需要修改:/etc/sudoers
# 现在是不可更改的,需要调整权限:chmod 0755 sudoers (需要root权限的)
root@SRV252:/etc# ll sudoers
-r--r----- 1 root root 815 Feb 23 13:06 sudoers
  • 将sudoers文件中的,以下内容进行修改
# User privilege specification
root    ALL=(ALL:ALL) ALL
name1  ALL=(ALL:ALL) ALL # 使用sudo时,仍需要密码的
name2   ALL=(ALL:ALL) NOPASSWD: ALL # 使用sudo时候,不要密码(免密的)
  • 普通用户可以使用docker了

2. 假如docker组

docker安装之后默认会创建docker组,docker组拥有读取套接字权限,因此将该普通用户加入docker组,该组下所有用户有访问unix套接字权限,最后刷新用户的初始组即可。

2.1 查看是否有docker用户
test@ubuntu:~$ sudo cat /etc/group |grep docker
docker:x:999:  # 表示存在

如果没有需要手动增加

sudo groupadd docker
2.2 查看 /var/run/docker.sock 的属性

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

# ll /var/run/docker.sock
srw-rw---- 1 root root 0 Oct 29 22:20 /var/run/docker.sock=
chgrp docker /var/run/docker.sock=
2.3 将普通用户添加至docker组
# 添加
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
  • 3
    点赞
  • 19
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
默认情况下,只有 root 用户才能使用 `--privileged` 参数启动 Docker 容器,因为该参数会让容器拥有访问宿主机系统资源的特权。如果使用普通用户启动容器,会提示权限不足的错误。 不过,您可以通过配置 Docker 守护进程来允许普通用户启动特权容器。具体来说,您需要将普通用户添加到 `docker` 用户组中,并将 Docker 守护进程配置为允许该用户组的成员使用特权容器。 具体操作步骤如下: 1. 将普通用户添加到 `docker` 用户组中: ``` sudo usermod -aG docker your_username ``` 其中,`your_username` 是您要添加到 `docker` 用户组中的用户名。 2. 编辑 Docker 配置文件 `/etc/docker/daemon.json`,配置容器运行时的默认参数: ``` { "default-runtime": "nvidia", "runtimes": { "nvidia": { "path": "nvidia-container-runtime", "runtimeArgs": [] } }, "runcmd": [ "/usr/sbin/sysctl -w kernel.perf_event_paranoid=-1" ], "max-concurrent-downloads": 10, "max-concurrent-uploads": 10, "iptables": true, "ipv6": true, "userns-remap": "default", "experimental": true, "features": { "buildkit": true }, "group": "docker" } ``` 其中,`group` 参数设置为 `docker`,表示允许属于 `docker` 用户组的成员使用 Docker。 3. 重新启动 Docker 守护进程: ``` sudo systemctl daemon-reload sudo systemctl restart docker ``` 4. 使用普通用户身份启动特权容器: ``` docker run --privileged -it bcc-image ``` 现在,普通用户已经可以使用特权容器了。需要注意的是,使用特权容器会增加安全风险,需要谨慎使用。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值