Linux系统Ubuntu以非root用户身份操作Docker的方法

news2024/11/16 21:34:07

  本文介绍在Linux操作系统Ubuntu版本中,通过配置,实现以非root用户身份,进行Docker各项操作的具体方法。

  在文章Linux系统Ubuntu配置Docker详细流程(https://blog.csdn.net/zhebushibiaoshifu/article/details/132612560)中,我们介绍了开源容器化平台和工具集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就是我们接下来要创建的用户组的名称。

sudo groupadd docker

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

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

sudo usermod -aG docker $USER

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

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

newgrp docker

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

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

docker run hello-world

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

  如果出现了上图所示的界面,就表示我们前述配置已经成功完成。在我们上一篇文章文章Linux系统Ubuntu配置Docker详细流程(https://blog.csdn.net/zhebushibiaoshifu/article/details/132612560)中,当时也用了这一句代码来测试Docker是否配置成功,而当时这一句代码的前面是需要有sudo字样的,如下图所示;而经过我们上述配置,就无需这个sudo了。

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

  至此,大功告成。

欢迎关注:疯狂学习GIS

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/963349.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

一文1800字从0到1使用Python Flask实战构建Web应用

Python Flask是一个轻量级的Web框架,它简单易用、灵活性高,适用于构建各种规模的Web应用。本文将介绍如何使用Python Flask框架来实战构建一个简单的Web应用,并展示其基本功能和特性。 第一部分:搭建开发环境 在开始之前我们需要…

Redis常用命令,你了解哪些呢?

目录 前置工作:先进入Redis客户端 1、Redis最核心的两个命令:get & set set:存键值对 get:根据key,取出value 2、Redis全局命令 2.1、keys ---查询当前服务器上匹配的key 2.1.1. ? 匹配任意一个字…

Python VScode 配置

在上一章节中我们已经安装了 Python 的环境,本章节我们将介绍 Python VScode 的配置。 准备工作: 安装 VS Code安装 VS Code Python 扩展安装 Python 3 安装 VS Code VSCode(全称:Visual Studio Code)是一款由微软…

关于岛屿的三道leetcode原题:岛屿周长、岛屿数量、统计子岛屿

题1:岛屿周长 给定一个 row x col 的二维网格地图 grid ,其中:gridi 1 表示陆地, gridi 0 表示水域。 网格中的格子 水平和垂直 方向相连(对角线方向不相连)。整个网格被水完全包围,但其中恰…

龙迅LT9611 2PORT MIPIDSI/CSI转HDMI,带HDCP,支持分辨率高达4K30HZ

龙迅LT9611 1.描述: LT9611 MIPIDSI/CSI到HDMI1.4桥具有双端口MIPID-PHY接收器前端配置,每个端口有4个数 据通道,每个数据通道运行2Gbps,最大输入带宽为16Gbps。该桥提供了一个HDMI数据输出与可 选的S/PDIF或8通道I2S串行音频…

STM32F4XX/APM32F4XX USB OTA升级

近期在研究USB CDC协议,使用USB Virtual Port Com功能与上位机通讯做了OTA功能。开发平台:MDK529 开发硬件:APM32F411 首先看下手册Flash分布,Flash总共8个扇区。 接下来进行Flash分区。 扇区 0 和 扇区 1做Boo区。 扇区 2做APP跳…

C#面试十问

1:C#中变量类型分为哪两种?它们的区别是什么?2:Class和Struct的区别?3:C#中类的修饰符和类成员的修饰符有哪些?4:面向对象的三个特征(特点)是什么&#xff1f…

随机游走任务中时间差分(0)和常数α蒙特卡罗方法的比较

一、说明 在这篇文章中,我们讨论了常α MC 方法和 TD(0) 方法之间的区别,并比较了它们在随机游走任务中的性能。TD方法在本文的所有测试中都覆盖了MC方法,因此将TD视为强化学习任务的方法是更可取的选择。 二、方法库介…

算法通关村第10关【白银】| 数组中第k大的数

思路:快速排序,每次都定位一个元素,找指定位置的元素还得有序,很容易就想到快排思想 小优化之处就是当前归位元素比目标元素小就继续往右,比目标元素大就往左,相等就返回 class Solution {public int fin…

【算法竞赛宝典】稀疏数组

【算法竞赛宝典】稀疏数组 题目描述代码展示 题目描述 代码展示 random.cpp #include <iostream>using namespace std;int main() {freopen("zip5.in", "w", stdout);int n, m;cin >> n >> m;cout << n << << m <…

小白入门python

建议用vscode进行代码学习 vscode下载地址:Download Visual Studio Code - Mac, Linux, Windows 左侧点击扩展安装python,右下角选择python版本&#xff0c;记得配置系统环境变量&#xff0c;python在系统(cmd)的版本由环境变量优先级决定,在编程软件中由自己选择解释器

4.1 链式栈StackT

C关键词&#xff1a;内部类/模板类/头插 C自学精简教程 目录(必读) C数据结构与算法实现&#xff08;目录&#xff09; 栈的内存结构 空栈&#xff1a; 有一个元素的栈&#xff1a; 多个元素的栈&#xff1a; 成员函数说明 0 clear 清空栈 clear 函数负责将栈的对内存释放…

为什么磁盘满可能导致cpu使用率飙升

先说原因 因为当文件在安装和卸载的时候&#xff0c;会使硬盘中的数据排列非常分散或者断断续续的&#xff0c;让电脑在查找时速度变慢&#xff0c;就造成大量的使用CPU资源。这时就需要更换CPU。 案例 事件描述 公司监控系统事件报警某个应用的磁盘满了。通过后端执行命令发现…

linux编程--进程--进程相关概念

5个问题了解进程&#xff1a; 什么是程序&#xff0c;什么是进程&#xff0c;有什么区别如何查看系统中有哪些进程&#xff1f;什么是进程标识符&#xff1f;什么叫父进程&#xff0c;什么叫子进程&#xff1f;c程序的存储空间是如何分配的&#xff1f; 1.程序是静态的概念&a…

【力扣】96. 不同的二叉搜索树 <动态规划>

【力扣】96. 不同的二叉搜索树 给你一个整数 n &#xff0c;求恰由 n 个节点组成且节点值从 1 到 n 互不相同的 二叉搜索树 有多少种&#xff1f;返回满足题意的二叉搜索树的种数。 示例 1&#xff1a; 输入&#xff1a;n 3 输出&#xff1a;5 示例 2&#xff1a; 输入&am…

算法竞赛备赛之数学知识训练提升,暑期集训营培训

1.质数 在大于1的整数&#xff0c;如果质包含1和本身这两个约数&#xff0c;就称之为素数/质数。 1.质数的判定&#xff08;试除法&#xff09; 优化后的&#xff1a; #include<iostream> #include<algorithm> ​ using namespace std; ​ bool is_prime(int n…

Multisim14.0仿真(五)三角波发生器

一、仿真原理图&#xff1a; 二、仿真效果&#xff1a;

微服务架构|go-zero 的自适应熔断器

原文链接&#xff1a; go-zero 的自适应熔断器 上篇文章我们介绍了微服务的限流&#xff0c;详细分析了计数器限流和令牌桶限流算法&#xff0c;这篇文章来说说熔断。 熔断和限流还不太一样&#xff0c;限流是控制请求速率&#xff0c;只要还能承受&#xff0c;那么都会处理&…

Meta AI的Nougat能够将数学表达式从PDF文件转换为机器可读文本

大多数科学知识通常以可移植文档格式&#xff08;PDF&#xff09;的形式存储&#xff0c;这也是互联网上第二突出的数据格式。然而&#xff0c;从这种格式中提取信息或将其转换为机器可读的文本具有挑战性&#xff0c;尤其是在涉及数学表达式时。 为了解决这个问题&#xff0c…

Sharding-JDBC(九)5.3.0版本,实现按月分表、自动建表、自动刷新节点

目录 一、简介二、Maven依赖三、配置文件application.ymlsharding.yaml 四、代码实现1.自动建表、自动刷新节点思路2.创建表结构3.TimeShardingAlgorithm.java 分片算法类4.ShardingAlgorithmTool.java 分片工具类5.ShardingTablesLoadRunner.java 初始化缓存类6.SpringUtil.ja…