first commit

This commit is contained in:
CrazyJasonwell
2026-07-23 20:36:13 +08:00
commit 513b68be8c
7915 changed files with 2642530 additions and 0 deletions
@@ -0,0 +1,50 @@
---
profileName: Happy Again
postId: "3548"
postType: post
categories:
- 15
---
本文介绍在**Linux**操作系统**Ubuntu**版本中,通过配置,实现以**非root用户**身份,进行**Docker**各项操作的具体方法。
在文章[疯狂学习GISDocker环境在Ubuntu系统中的配置](https://zhuanlan.zhihu.com/p/675507675)中,我们介绍了开源容器化平台和工具集**Docker**的详细配置方法;配置完毕后,**Docker**就已经可以正常使用了,但是还有着一个小问题——我们在**Unix**系统中进行**Docker**的各项操作时,由于**Docker**是和**Unix**的[套接字](https://zhida.zhihu.com/search?content_id=238900875&content_type=Article&match_order=1&q=%E5%A5%97%E6%8E%A5%E5%AD%97&zhida_source=entity)**Socket**)绑定的,而套接字归属于系统的**root**用户,非**root**用户如果需要访问它,就只能通过`sudo`命令实现;这也导致了,我们运行**Docker**时都必须要以**root**用户身份(也就是通过`sudo`命令)来实现。这就使得我们在执行很多和**Docker**有关的命令时,都需要输入一次**root**用户的密码,导致较为麻烦。那么,我们是否可以取消这一个限制呢?
答案是可以的,我们可以通过新建一个**Unix**[用户组](https://zhida.zhihu.com/search?content_id=238900875&content_type=Article&match_order=1&q=%E7%94%A8%E6%88%B7%E7%BB%84&zhida_source=entity)的方式,来实现上述需求。我们需要建立一个用户组,将其命名为`docker`,并将我们当前的非**root**用户放入这一个用户组中;这样操作之后,当**Docker**启动时,其会创建一个可供`docker`用户组成员访问的**Unix**套接字,从而使得我们可以用非**root**用户身份来进行后续的各项操作。
为完成上述工作,具体需要的操作如下。其中,本文所涉及的全部代码,都在终端中执行即可。
首先,执行如下的代码,创建名为`docker`的一个用户组。其中,`groupadd`是一个**Linux**系统命令,用于创建用户组;`docker`就是我们接下来要创建的用户组的名称。
运行上述代码,如下图所示。
![](https://picx.zhimg.com/v2-071b515a786ce5f43b55e240a09a5aeb_1440w.jpg)
接下来,执行如下的代码,将我们当前的非**root**用户放入刚刚创建的用户组中。其中,`usermod`是一个**Linux**系统命令,用于修改用户的属性和组关联;`-aG``usermod`命令的选项,其中`-a`表示追加(**Append**),`-G`表示指定用户所属的附加组;`docker`是要将用户添加到的用户组的名称;`$USER`是一个环境变量,表示当前用户的用户名。
```bash
sudo usermod -aG docker $USER
```
运行上述代码,如下图所示。
![](https://pic1.zhimg.com/v2-d0f0cadb67219129700673aa01fcc06c_1440w.jpg)
随后,执行如下的代码,切换当前会话的有效组。其中,`newgrp`是一个**Linux**系统命令,用于切换当前会话的有效组;`docker`是我们要切换到的目标组的名称。
运行上述代码,如下图所示。
![](https://picx.zhimg.com/v2-102d659f207dee8f1ec281ca91389321_1440w.jpg)
随后,就完成了我们的配置工作。此时,我们可以通过如下的代码,验证一下我们是否已经成功完成前述配置;该命令会下载一个测试映像并在容器中运行它。
运行上述代码,如下图所示。
![](https://pica.zhimg.com/v2-3bbb3ee481b965b5877592975b529f9e_1440w.jpg)
如果出现了上图所示的界面,就表示我们前述配置已经成功完成。在我们上一篇文章文章[疯狂学习GISDocker环境在Ubuntu系统中的配置](https://zhuanlan.zhihu.com/p/675507675)中,当时也用了这一句代码来测试**Docker**是否配置成功,而当时这一句代码的前面是需要有`sudo`字样的,如下图所示;而经过我们上述配置,就无需这个`sudo`了。
![](https://pic2.zhimg.com/v2-229cba24a287c659fb0174290d5dd377_1440w.jpg)
当然,如果大家运行了前述`docker run hello-world`代码后,出现了报错的情况,大家则可以参考**Docker**的[官方网站](https://link.zhihu.com/?target=https%3A//docs.docker.com/engine/install/linux-postinstall/),其中有对这一问题的说明。
至此,大功告成。