Linux系统Ubuntu以非root用户身份操作Docker的方法

本文介绍在Linux 操作系统Ubuntu 版本中,通过配置,实现以非root用户 身份,进行Docker各项操作的具体方法。

在文章Linux系统Ubuntu配置Docker详细流程https://blog.csdn.net/zhebushibiaoshifu/article/details/132612560)中,我们介绍了开源容器化平台和工具集**Docker** 的详细配置方法;配置完毕后,Docker 就已经可以正常使用了,但是还有着一个小问题------我们在Unix 系统中进行Docker 的各项操作时,由于Docker 是和Unix 的套接字(Socket )绑定的,而套接字归属于系统的root 用户,非root 用户如果需要访问它,就只能通过sudo命令实现;这也导致了,我们运行Docker 时都必须要以root 用户身份(也就是通过sudo命令)来实现。这就使得我们在执行很多和Docker 有关的命令时,都需要输入一次root用户的密码,导致较为麻烦。那么,我们是否可以取消这一个限制呢?

答案是可以的,我们可以通过新建一个Unix 用户组的方式,来实现上述需求。我们需要建立一个用户组,将其命名为docker,并将我们当前的非root 用户放入这一个用户组中;这样操作之后,当Docker 启动时,其会创建一个可供docker用户组成员访问的Unix 套接字,从而使得我们可以用非root用户身份来进行后续的各项操作。

为完成上述工作,具体需要的操作如下。其中,本文所涉及的全部代码,都在终端中执行即可。

首先,执行如下的代码,创建名为docker的一个用户组。其中,groupadd是一个Linux 系统命令,用于创建用户组;docker就是我们接下来要创建的用户组的名称。

bash 复制代码
sudo groupadd docker

运行上述代码,如下图所示。

接下来,执行如下的代码,将我们当前的非root 用户放入刚刚创建的用户组中。其中,usermod是一个Linux 系统命令,用于修改用户的属性和组关联;-aGusermod命令的选项,其中-a表示追加(Append ),-G表示指定用户所属的附加组;docker是要将用户添加到的用户组的名称;$USER是一个环境变量,表示当前用户的用户名。

bash 复制代码
sudo usermod -aG docker $USER

运行上述代码,如下图所示。

随后,执行如下的代码,切换当前会话的有效组。其中,newgrp是一个Linux 系统命令,用于切换当前会话的有效组;docker是我们要切换到的目标组的名称。

bash 复制代码
newgrp docker

运行上述代码,如下图所示。

随后,就完成了我们的配置工作。此时,我们可以通过如下的代码,验证一下我们是否已经成功完成前述配置;该命令会下载一个测试映像并在容器中运行它。

bash 复制代码
docker run hello-world

运行上述代码,如下图所示。

如果出现了上图所示的界面,就表示我们前述配置已经成功完成。在我们上一篇文章文章Linux系统Ubuntu配置Docker详细流程https://blog.csdn.net/zhebushibiaoshifu/article/details/132612560)中,当时也用了这一句代码来测试**Docker** 是否配置成功,而当时这一句代码的前面是需要有sudo字样的,如下图所示;而经过我们上述配置,就无需这个sudo了。

当然,如果大家运行了前述docker run hello-world代码后,出现了报错的情况,大家则可以参考Docker官方网站,其中有对这一问题的说明。

至此,大功告成。

欢迎关注:疯狂学习GIS

相关推荐
退役小学生呀1 小时前
十九、云原生分布式存储 CubeFS
分布式·docker·云原生·容器·kubernetes·k8s
你的人类朋友3 小时前
【操作系统】Unix和Linux是什么关系?
后端·操作系统·unix
deeper_wind5 小时前
k8s-容器化部署论坛和商城服务(小白的“升级打怪”成长之路)
linux·运维·容器·kubernetes
勇往直前plus5 小时前
VMware centos磁盘容量扩容教程
linux·运维·centos
UtopianCoding5 小时前
MinerU:重新定义PDF智能提取的开源利器
docker·pdf·开源
政安晨6 小时前
Ubuntu 服务器无法 ping 通网站域名的问题解决备忘 ——通常与网络配置有关(DNS解析)
linux·运维·服务器·ubuntu·ping·esp32编译服务器·dns域名解析
007php0077 小时前
Jenkins+docker 微服务实现自动化部署安装和部署过程
运维·数据库·git·docker·微服务·自动化·jenkins
路溪非溪8 小时前
嵌入式Linux驱动开发杂项总结
linux·运维·驱动开发
Neolock8 小时前
Linux应急响应一般思路(三)
linux·web安全·应急响应
被遗忘的旋律.9 小时前
Linux驱动开发笔记(七)——并发与竞争(上)——原子操作
linux·驱动开发·笔记