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

如何配置 Docker 以实现无需 sudo 使用

1. 背景知识:为什么需要 sudo

Docker 是一个容器化平台,其核心组件包括:

  • Docker 守护进程(dockerd:负责管理容器的创建、运行和销毁。
  • Docker CLI:用户通过命令行工具(如 docker ps 或 docker run)与守护进程交互。

默认情况下,Docker 守护进程以 root 用户身份运行,而普通用户无法直接访问 /var/run/docker.sock 文件(这是 Docker 守护进程的 Unix Socket)。因此,普通用户需要通过 sudo 提升权限才能执行 Docker 命令。

为了简化操作,Docker 提供了一个名为 docker 的用户组。将用户添加到该组后,用户即可直接与 Docker 守护进程通信,从而无需使用 sudo

2. 配置步骤

2.1 检查 docker 用户组是否存在

在安装 Docker 时,通常会自动创建一个名为 docker 的用户组。你可以通过以下命令检查该用户组是否存在:

cat /etc/group | grep docker

如果输出类似以下内容,则说明 docker 用户组已存在:

docker:x:999:

如果没有找到 docker 用户组,请确保 Docker 已正确安装。如果尚未安装,可以参考官方文档完成安装。

2.2 将当前用户添加到 docker 用户组

运行以下命令将当前用户添加到 docker 用户组:

sudo usermod -aG docker $USER

  • -aG:表示将用户追加到指定的用户组。
  • $USER:表示当前登录的用户名。

2.3 应用更改

将用户添加到 docker 用户组后,需要重新登录或重启系统以使更改生效。你也可以通过以下命令立即应用更改,而无需重启:

newgrp docker

这会临时切换到 docker 用户组,使当前终端会话具有 docker 组的权限。

2.4 验证配置

运行以下命令验证是否可以无需 sudo 使用 docker

docker ps

如果没有报错,并且输出类似以下内容,则说明配置成功:

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

如果仍然需要 sudo,请检查以下几点:

  1. 确保用户已正确添加到 docker 用户组:

    groups $USER

    输出中应包含 docker
  2. 确保 Docker 服务正在运行:

    sudo systemctl status docker

3. 注意事项

3.1 安全性

将用户添加到 docker 用户组后,该用户将拥有与 root 用户类似的权限,因为 Docker 容器可以直接访问主机的文件系统和资源。这种权限提升可能会带来潜在的安全风险,尤其是在多用户环境中。

建议:
  • 如果你不完全信任该用户,请谨慎操作,或者考虑使用更严格的权限管理方式(如使用 sudo 或限制 Docker 的功能)。
  • 对于生产环境,建议使用专用的服务账户来运行 Docker,并避免将普通用户添加到 docker 用户组。

相关文章:

如何配置 Docker 以实现无需 sudo 使用

1. 背景知识:为什么需要 sudo? Docker 是一个容器化平台,其核心组件包括: Docker 守护进程(dockerd):负责管理容器的创建、运行和销毁。Docker CLI:用户通过命令行工具&#xff08…...

[文献阅读] 可变形卷积DCN - Deformable Convolutional Networks

**文献信息:**Deformable Convolutional Networks arxiv.org/abs/1703.06211 发表于ICCV 2017,提出了可变形卷积DCN(Deformable ConvNets) 摘要 卷积神经网络(CNN)由于其构建模块固定的几何结构天然地局限…...

【统计学相关笔记】2. 多元正态的Cochran定理

fisher 引理 如何说明一个线性变换和二次型独立: 二次型矩阵和线性变换阵乘积0即可。...

蓝桥杯刷题——第十五届蓝桥杯大赛软件赛省赛C/C++ 大学 B 组

一、0握手问题 - 蓝桥云课 算法代码&#xff1a; #include <iostream> using namespace std; int main() {int sum0;for(int i49;i>7;i--)sumi;cout<<sum<<endl;return 0; } 直接暴力&#xff0c;题意很清晰&#xff0c;累加即可。 二、0小球反弹 - 蓝…...

Canoe Panel常用控件

文章目录 一、Panel 中控件分类1. 指示类控件2. 功能类控件3. 信号值交互类控件4. 其他类控件 二、控件使用方法1. Group Box 控件2. Input/Output Box控件3. Static Text控件4. Button控件5. Switch/Indicator 控件 提示&#xff1a;Button 和 Switch 的区别参考 一、Panel 中…...

【软考-架构】11.3、设计模式-新

✨资料&文章更新✨ GitHub地址&#xff1a;https://github.com/tyronczt/system_architect 文章目录 项目中的应用设计模式创建型设计模式结构型设计模式行为型设计模式 &#x1f4af;考试真题题外话 项目中的应用 在实际项目中&#xff0c;我应用过多种设计模式来解决不同…...

【后端】【django】Django 自带的用户系统与 RBAC 机制

Django 自带的用户系统与 RBAC 机制 Django 自带的用户系统&#xff08;django.contrib.auth&#xff09;提供了 身份验证&#xff08;Authentication&#xff09; 和 权限管理&#xff08;Authorization&#xff09;&#xff0c;能够快速实现 用户管理、权限控制、管理员后台…...

洛谷每日1题-------Day20__P1401 [入门赛 #18] 禁止在 int 乘 int 时不开 long long

题目描述 在比赛中&#xff0c;根据数据范围&#xff0c;分析清楚变量的取值范围&#xff0c;是非常重要的。int 类型变量与 int 类型变量相乘&#xff0c;往往可能超出 int 类型可以表示的取值范围。 现在&#xff0c;给出两个 int 类型变量 x,y 及其取值范围&#xff0c;请…...

【大模型(LLMs)RAG 检索增强生成 面经】

1 RAG 基础面 1.1 为什么大模型需要外挂 (向量) 知识库? 如何将外部知识注入大模型,最直接的方法:利用外部知识对大模型进行微调。 思路: 构建几十万量级的数据,然后利用这些数据 对大模型进行微调,以将 额外知识注入大模型 优点: 简单粗暴 缺点: 这几十万量级的数据…...

Centos 7 安装达梦数据库

一、环境准备 1. 确认操作系统的版本和数据库的版本是否一致 cat /etc/redhat-release 2. 关闭防火墙 查看防火墙状态 firewall-cmd --state 停止firewall systemctl stop firewalld.service 禁止firewall开机启动 systemctl disable firewalld.service 3. 修改文件l…...

@Autowired 注解在构造器上的使用规则(字段注入也挺好的)

背景 在看Spring Framework官方文档时&#xff0c;看到这样一段描述&#xff1a; As of Spring Framework 4.3, an Autowired​ annotation on such a constructor is no longer necessary if the target bean defines only one constructor to begin with. However, if seve…...

深度学习视觉2D检测算法综述

目录 一、两阶段目标检测算法 1.1 R-CNN&#xff08;Region-based CNN&#xff0c;2014&#xff09; 1.2 Fast R-CNN&#xff08;Fast Region-based CNN&#xff0c;2015&#xff09; 1.3 Faster R-CNN&#xff08;Faster Region-based CNN&#xff0c;2016&#xff09; 1…...

复试不难,西电马克思主义学院—考研录取情况

01、马克思主义学院各个方向 02、24马克思主义学院近三年复试分数线对比 PS&#xff1a;马院24年院线相对于23年院线增加15分&#xff0c;反映了大家对于马克思主义理论学习与研究的热情高涨&#xff0c;也彰显了学院在人才培养、学科建设及学术研究等方面的不断进步与成就。 6…...

Axios 请求取消:从原理到实践

Axios 请求取消&#xff1a;从原理到实践 在现代前端开发中&#xff0c;网络请求是不可或缺的一部分。Axios 是一个基于 Promise 的 HTTP 客户端&#xff0c;广泛应用于浏览器和 Node.js 环境中。然而&#xff0c;在某些场景下&#xff0c;我们可能需要取消正在进行的请求&…...

【Leetcode 每日一题】3306. 元音辅音字符串计数 I

问题背景 给你一个字符串 w o r d word word 和一个 非负 整数 k k k。 返回 w o r d word word 的 子字符串 中&#xff0c;每个元音字母&#xff08;‘a’、‘e’、‘i’、‘o’、‘u’&#xff09;至少 出现一次&#xff0c;并且 恰好 包含 k k k 个辅音字母的子字符串…...

【A2DP】深入解读A2DP中通用访问配置文件(GAP)的互操作性要求

目录 一、模式支持要求 1.1 发现模式 1.2 连接模式 1.3 绑定模式 1.4 模式间依赖关系总结 1.5 注意事项 1.6 协议设计深层逻辑 二、安全机制&#xff08;Security Aspects&#xff09; 三、空闲模式操作&#xff08;Idle Mode Procedures&#xff09; 3.1 支持要求 …...

分享一个免费的CKA认证学习资料

关于CKA考试 CKA&#xff08;Certified Kubernetes Administrator&#xff09;是CNCF基金会&#xff08;Cloud Native Computing Foundation&#xff09;官方推出的Kubernetes管理员认证计划&#xff0c;用于证明持有人有履行Kubernetes管理的知识&#xff0c;技能等相关的能力…...

观成科技:​加密C2框架Platypus流量分析

一、工具介绍 Platypus 是一款支持多会话的交互式反向 Shell 管理器。在实际的渗透测试中&#xff0c;为了解决 Netcat/Socat 等工具在文件传输、多会话管理方面的不足,该工具在多会话管理的基础上增加了在渗透测试中能更好发挥作用的功能&#xff08;如&#xff1a;交互式 Sh…...

Jetson Nano NX 重装系统

本篇记录了自己刚拿到Jetson板子后&#xff0c;刻意去学习给板子重刷系统的过程&#xff0c;学会重装系统是玩嵌入式开发板的基操。 注意&#xff1a;我使用的是 Nvidia 官方 SDK Manager 给 Jetson 刷系统的&#xff0c;需要额外准备一台 linux 电脑&#xff08;双系统或者虚拟…...

注解+AOP实现权限控制

注解与AOP实战&#xff1a;实现权限控制 在现代Java开发中&#xff0c;注解&#xff08;Annotation&#xff09;和面向切面编程&#xff08;AOP&#xff09;是两种强大的技术&#xff0c;它们能够帮助我们实现代码的解耦&#xff0c;提高代码的可读性和可维护性。本文将通过一…...

Java数据结构第二十三期:Map与Set的高效应用之道(二)

专栏&#xff1a;Java数据结构秘籍 个人主页&#xff1a;手握风云 目录 一、哈希表 1.1. 概念 1.2. 冲突 1.3. 避免冲突 1.4. 解决冲突 1.5. 实现 二、OJ练习 2.1. 只出现一次的数字 2.2. 随机链表的复制 2.3. 宝石与石头 一、哈希表 1.1. 概念 顺序结构以及平衡树中…...

linux系统命令——权限

一、有哪些权限 读&#xff08;r&#xff09;——对应数字4 写&#xff08;w&#xff09;——对应数字2 执行&#xff08;x&#xff09;——对应数字1 二、权限及数字的对应 4对应r-- 2对应-w- 1对应--x 5对应r-x 6对应rw- 7对应rwx 三、文件的基本属性 如图&#…...

设计模式-工厂模式、策略模式、代理模式、责任链模式

目录 1 工厂模式 1.1 简单工厂模式 1.2 工厂方法模式 1.3 抽象工厂模式 1.4 工厂模式适用的场合 1.5 三种工厂模式的使用选择 2 策略模式 2.1 定义 2.2 结构 3 代理模式 3.1 啥是代理模式 3.2 为啥要用代理模式 3.3 代理模式分类 3.3.1 静态代理 3.3.2 动态代理…...

nginx中间件部署

普通权限账户安装NGINX中间件 1、拥有高级权限的账户安装必要的插件 sudo yum install -y gcc-c make pcre pcre-devel zlib zlib-devel openssl openssl-devel 2、普通账户进行NGINX的脚本式安装 vi nginx_intall.sh #!/bin/bash TAR_NAME"$1" TAR_NAME_DIRba…...

PentestGPT 下载

PentestGPT 下载 PentestGPT 介绍 PentestGPT&#xff08;Penetration Testing GPT&#xff09;是一个基于大语言模型&#xff08;LLM&#xff09;的智能渗透测试助手。它结合了 ChatGPT&#xff08;或其他 GPT 模型&#xff09;与渗透测试工具&#xff0c;帮助安全研究人员自…...

JVM 2015/3/15

定义&#xff1a;Java Virtual Machine -java程序的运行环境&#xff08;java二进制字节码的运行环境&#xff09; 好处&#xff1a; 一次编写&#xff0c;到处运行 自动内存管理&#xff0c;垃圾回收 数组下标越界检测 多态 比较&#xff1a;jvm/jre/jdk 常见的JVM&…...

Java中接口隔离原则简介和代码举例

简介&#xff1a; 接口隔离原则&#xff08;Interface Segregation Principle&#xff0c;ISP&#xff09;是面向对象设计SOLID原则中的“I”&#xff0c;其核心思想是&#xff1a; 定义 客户端不应被迫依赖它不使用的方法。即&#xff0c;一个类对另一个类的依赖应建立在最…...

基于自定义线程池手写一个异步任务管理器

我们在后端执行某些耗时逻辑操作时往往会导致长时间的线程阻塞&#xff0c;在这种情况之下&#xff0c;我们往往会引一条异步线程去处理这些异步任务&#xff0c;如果每次都创建新的线程来处理这些任务&#xff0c;不仅会增加代码冗余&#xff0c;还可能造成线程管理混乱&#…...

sql靶场-时间盲注(第九、十关)保姆级教程

目录 时间盲注&#xff08;第九、十关&#xff09; 1.判断 2.确认时间盲注 2.手工尝试时间盲注 数据库名长度 数据库名字符 表数 表名长度 表名字符 字段数 字段名长度 字段名字符 4.脚本时间盲注注入 5.第十关 时间盲注&#xff08;第九、十关&#xff09; 1.判…...

Vuex 高级技巧与最佳实践

使用 map 辅助函数简化代码&#xff1a; javascript import { mapState, mapGetters } from vuexexport default {computed: {...mapState([num]),...mapGetters([doubleNum])} }模块化开发&#xff1a; javascript // modules/student.js export default {namespaced: true,st…...