当前位置: 首页 > news >正文

Docker--将非root用户添加docker用户组,解决频繁sudo执行输入密码的问题

一、为什么要有docker用户组?

根本原因: Linux的设备访问权限控制机制

Docker守护进程(dockerd)运行时会创建一个特殊的Unix套接字文件,如:/var/run/docker.sock。
这个文件就像一个“门”,所有docker命令(如docker ps, docker run)都要通过它和Docker引擎通信。

查看该文件权限示例:
bash示例:

ls -l /var/run/docker.sock

输出可能类似:
在这里插入图片描述
解释:

  • s:表示这是一个socket文件
  • rw-rw----:权限说明
    • root用户:可读可写
    • docker组:可读可写
    • 其他人:无权限

所以:
只有root用户或docker组的成员才能访问这个文件,即:这两个类型用户可以直接使用docker相关命令。其他用户如:ubuntu等都不能直接使用,需要加上sudo执行才可以。但是加上sudo需要每次都输入密码就太麻烦了,这里我们可以将当前用户加入到docker用户组中,这样之后就可以直接使用docker命令了。

二、如何验证docker用户组是否存在?

方法1:查看docker组(推荐)

bash示例:

getent group docker

输出类似:
在这里插入图片描述
解释:
表示docker组GID是999,暂时没有成员。

方法 2:查看系统所有组

bash示例:

cat /etc/group | grep docker

效果同上。
在这里插入图片描述

方法 3:查看当前用户所属的所有组

bash示例:

groups $USER

执行如下:
在这里插入图片描述
解释:
如上说明:你的用户nnnnn用户不在docker组中,所以无法访问/var/run/docker.sock

或执行:

id $USER

在这里插入图片描述

三、当前用户加入到docker用户组

将当前用户加入docker组。
bash示例:

sudo usermod -aG docker $USER

刷新组权限(当前会话生效)
bash示例:

newgrp docker

验证是否生效
bash示例:

docker ps 

执行效果如下:
在这里插入图片描述
不在提示permission denied,说明执行成功了。

四、Docker权限 ≈ root权限

注意:
能操作Docker的用户,实际上拥有接近root的权限,因为:
bash示例:

docker run -v /:/host ubuntu chroot /host

可以访问整个系统文件!

所以:

  • 不要随意将普通用户加入docker组
  • 生产环境建议使用更细粒度的权限控制(如rootless mode)

向阳而生,Dare To Be!!!

http://www.dtcms.com/a/312051.html

相关文章:

  • 【动态规划 | 子序列问题】子序列问题的最优解:动态规划方法详解
  • RK628F HDMI-IN调试:应用接口使用
  • Vulnhub ELECTRICAL靶机复现(附提权)
  • QPainter::CompositionMode解析
  • junit总@mockbaen与@mock的区别与联系
  • flutter分享到支付宝
  • Linux进程控制核心:创建·等待·终止·替换
  • Qt 信号和槽正常连接返回true,但发送信号后槽函数无响应问题【已解决】
  • 深入解析Java Stream Sink接口
  • Design Compiler:Milkyway库的创建与使用
  • 1-7〔 OSCP ◈ 研记 〕❘ 信息收集▸主动采集E:SMB基础
  • 硬件-可靠性学习DAY1——系统可靠性设计指南:从原理到实践
  • Markdown 中的图表 Mermaid 与 classDiagram
  • Thread 中的 run() 方法 和 start() 方法的
  • 笔记:C语言中指向指针的指针作用
  • MQTT协议测试环境部署
  • 错误: 找不到或无法加载主类 原因: java.lang.ClassNotFoundException
  • (nice!!!)(LeetCode 每日一题) 2561. 重排水果 (哈希表 + 贪心)
  • UNet改进(29):记忆增强注意力机制在UNet中的创新应用-原理、实现与性能提升
  • 【嵌入式汇编基础】-ARM架构基础(三)
  • 动态规划解最长回文子串:深入解析与优化问题
  • 【redis】基于工业界技术分享的内容总结
  • JS的作用域
  • 第15届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2024年1月28日真题
  • sqli-labs:Less-20关卡详细解析
  • MFC 实现托盘图标菜单图标功能
  • 中州养老Day02:服务管理护理计划模块
  • 中之人模式下的虚拟主持人:动捕设备与面捕技术的协同驱动
  • 2025系规教材改革后,论文怎么写?
  • 错误处理_IncompatibleKeys