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正常使用

Ubuntu 22.04 中,如果你不想使用 root 用户来安装 Docker,可以按照以下步骤进行: 1. 在另一台联网的机器上,下载 Docker 的 deb 包和依赖包。可以从 Docker 的官方网站下载对应版本的 deb 包和依赖包,也可以使用 wget 命令下载。 例如,如果要安装 Docker 20.10.8 版本,可以使用以下命令下载对应的 deb 包和依赖包: ``` mkdir docker cd docker wget https://download.docker.com/linux/ubuntu/dists/hirsute/pool/stable/amd64/containerd.io_1.4.9-1_amd64.deb wget https://download.docker.com/linux/ubuntu/dists/hirsute/pool/stable/amd64/docker-ce-cli_20.10.8~3-0~ubuntu-hirsute_amd64.deb wget https://download.docker.com/linux/ubuntu/dists/hirsute/pool/stable/amd64/docker-ce-rootless-extras_20.10.8~3-0~ubuntu-hirsute_amd64.deb wget https://download.docker.com/linux/ubuntu/dists/hirsute/pool/stable/amd64/docker-ce_20.10.8~3-0~ubuntu-hirsute_amd64.deb ``` 2. 将下载的 deb 包和依赖包复制到目标机器上。 可以使用 scp 命令将文件复制到目标机器上,例如: ``` scp *.deb user@remote:/path/to/folder ``` 其中,user 是目标机器上的用户名,remote 是目标机器的 IP 地址或域名,/path/to/folder 是目标机器上的文件夹路径。 3. 在目标机器上安装依赖包。 使用以下命令安装依赖包: ``` sudo dpkg -i containerd.io_1.4.9-1_amd64.deb docker-ce-cli_20.10.8~3-0~ubuntu-hirsute_amd64.deb docker-ce-rootless-extras_20.10.8~3-0~ubuntu-hirsute_amd64.deb docker-ce_20.10.8~3-0~ubuntu-hirsute_amd64.deb ``` 如果出现依赖关系错误,可以使用以下命令修复: ``` sudo apt-get install -f ``` 4. 将 root 用户添加docker 用户组中。 使用以下命令将当前用户添加docker 用户组中: ``` sudo usermod -aG docker $USER ``` 其中,$USER 是当前用户名。 5. 重新登录或重启系统。 为了让用户组变化生效,需要重新登录或重启系统。 6. 验证 Docker 是否安装成功。 使用以下命令验证 Docker 是否安装成功: ``` docker run hello-world ``` 如果输出以下信息,说明 Docker 安装成功: ``` Hello from Docker! This message shows that your installation appears to be working correctly. ... ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值