当前位置: 首页 > 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.lryc.cn/news/608222.html

相关文章:

  • Docker 部署与配置 MySQL 5.7
  • CMake 命令行参数完全指南 (1)
  • Ubuntu18网络连接不上也ping不通网络配置问题排查与解决方法
  • 2 安装 Docker 和 Jenkins:持续构建环境起步
  • 音视频学习(四十七):模数转换
  • 题单【模拟与高精度】
  • lumerical——布拉格光栅(2)
  • VS2019安装HoloLens 没有设备选项
  • 类似 Pixso 但更侧重「网页 / 软件界面设计」「前后端可视化开发」的工具
  • 【AI】AIService(基本使用与指令定制)
  • 【MODIS数据】MYD021KM
  • 解决 InputStream 只能读取一次问题
  • 位运算-371.两整数之和-力扣(LeetCode)
  • 9.3panic!最佳实践
  • 高效截图的4款工具深度解析
  • 从基础功能到自主决策, Agent 开发进阶路怎么走?
  • 自动化革命:软件开发的引擎与未来蓝图
  • 二、无摩擦刚体捉取——固定捉取
  • 第14届蓝桥杯Python青少组中/高级组选拔赛(STEMA)2022年12月18日真题
  • C++刷题 - 7.27
  • Rust: 工具链版本更新
  • Kubernetes Service 全面详解:从概念到实践
  • 具身智能VLA困于“数据泥潭”,人类活动视频数据是否是“破局之钥”?
  • 北京-4年功能测试2年空窗-报培训班学测开-今天来聊聊我的痛苦
  • 对于考研数学的理解
  • Linux 系统管理-15-OpenSSH 服务管理
  • 【Pytorch✨】LSTM 入门
  • Next.js 怎么使用 Chakra UI
  • 洛谷做题4:P5713 【深基3.例5】洛谷团队系统
  • OAuth 2.0 详解:现代授权的核心协议