Ubuntu 为非 root 用户添加 docker 用户组


1、简介

我们在安装完 docker 后,使用普通用户运行 docker 的命令时都需要使用 sudo 来运行。这是因为 docker 需要使用到系统内核等较底层的资源。因此 dockerd 服务本身也是使用 root 用户运行的。

但是大多数人都知道 Linux 系统中 root 的权限过大,我们一般不建议使用,即便是管理员不是必要的时候也避免使用,因为防止出现误操作导致灾难性的问题。

因此,我们大数据情况都是使用一个具有 sudo 权限的普通用户来操作 docker,但这显得很麻烦且输入命令变多,如果有时忘了输入 sudo 就会出现类似如下权限拒绝的报错。
————————————————

jiangzl@ubuntu:~$ docker images
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/images/json: dial unix /var/run/docker.sock: connect: permission denied

能否给我们的普通用户添加能够直接运行 docker 的权限呢?答案是肯定的,而且非常简单。


2、相关环境

Ubuntu 18.04.5
Docker 20.10.17

3、注意事项

以下内容均使用具有 sudo 权限的 jiangzl 普通用户操作。

简单来说就是为非 root 用户添加一个 docker 的用户组中即可,以下的操作步骤:

1.验证是否有 docker 用户组

正常情况下,安装完 docker 后会自动创建一个 docker 的用户组,可以通过如下命令查看。

grep docker /etc/group

如下示例:

grep docker /etc/group
docker:x:999

如果有搜索到结果,就证明已经有 docker 用户组存在(不需要执行下面的创建用户组操作)。如果你天赋异禀,运气爆棚地发现确实没有这个用户组的话,那就自己创建一个 docker 用户组吧

sudo groupadd docker

2.添加非 root 用户到 docker 用户组

在具有 sudo 权限的用户命令行环境执行如下命令即可,其中 your-user 替换成需要添加到 docker 用户组的非 root 用户。

sudo usermod -aG docker your-user

如下示例,是将当前用户 jiangzl 添加到 docker 用户组

jiangzl@ubuntu:~$ sudo usermod -aG docker $USER
jiangzl@ubuntu:~$ id jiangzl
uid=1000(jiangzl) gid=1000(jiangzl) groups=1000(jiangzl),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),116(lpadmin),126(sambashare),128(docker)

$USER 是一个 Linux 的环境变量,表示的是当前用户的用户名。
如果是需要添加其他用户,改变后面的参数即可

sudo usermod -aG docker test

3.更新用户组

你可能会发现,执行了上面的命令添加了用户到 docker 用户组怎么还是会报错呢?

jiangzl@ubuntu:~$ docker images
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/images/json: dial unix /var/run/docker.sock: connect: permission denied

需要更新组

newgrp docker     #更新用户组
docker ps    #测试docker命令是否可以使用sudo正常使用

  • 2
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值