前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Ubuntu环境实现非root身份操作Docker的方法

Ubuntu环境实现非root身份操作Docker的方法

作者头像
疯狂学习GIS
发布2023-11-21 17:11:42
6050
发布2023-11-21 17:11:42
举报
文章被收录于专栏:疯狂学习GIS疯狂学习GIS

   在文章Linux Ubuntu安装Docker环境中,我们介绍了开源容器化平台和工具集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就是我们接下来要创建的用户组的名称。

代码语言:javascript
复制
sudo groupadd docker

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

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

代码语言:javascript
复制
sudo usermod -aG docker $USER

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

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

代码语言:javascript
复制
newgrp docker

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

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

代码语言:javascript
复制
docker run hello-world

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

  如果出现了上图所示的界面,就表示我们前述配置已经成功完成。在我们上一篇文章文章Linux Ubuntu安装Docker环境中,当时也用了这一句代码来测试Docker是否配置成功,而当时这一句代码的前面是需要有sudo字样的,如下图所示;而经过我们上述配置,就无需这个sudo了。

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

  至此,大功告成。

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2023-11-19,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 疯狂学习GIS 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档