首页 > 其他分享 >关于`dial unix /var/run/docker.sock: connect: permission denied`的处理方法笔记

关于`dial unix /var/run/docker.sock: connect: permission denied`的处理方法笔记

时间:2023-09-18 22:00:36浏览次数:48  
标签:dial run permission sudo sock var docker root

之前遇到的一个问题,使用非root用户时操作docker提示无权限,在查阅了一些文章之后自己又摸索出了一些更方便的方法,顺手记录下来。

一、问题发现

根据报错信息dial unix /var/run/docker.sock: connect: permission denied,可以看出,是因为当前用户对docker使用的unix domain socket文件/var/run/docker.sock无权限。
于是查看docker.sock相关信息:

ls -l /var/run/docker.sock
# srw-rw---- 1 root docker 0 /var/run/docker.sock

可以看到,权限模式为srw-rw----,所属用户为root,所属组为docker。因此有权限的用户包括root用户和docker组内的用户。

二、使用root用户进行操作

1. 使用sudo操作

sudo docker <args>

2. 切换root用户操作

sudo -i
docker <args>
exit

三、授予docker.sock操作权限

1. 单次授予,重启后失效

sudo chmod 666 /var/run/docker.sock

2. 永久授予

2.1. 将当前用户加入docker组(推荐)

sudo gpasswd -a $USER docker
# 或
sudo usermod -a -G docker $USER

2.2. 向所有用户授予权限

# 查看docker.socket配置
cat /usr/lib/systemd/system/docker.socket

可以看到以下内容

[Unit]
Description=Docker Socket for the API

[Socket]
ListenStream=/var/run/docker.sock
SocketMode=0660
SocketUser=root
SocketGroup=docker

[Install]
WantedBy=sockets.target

其中ListenStreamunix domain socket文件路径,SocketMode为权限模式,SocketUser为所属用户,SocketGroup为所属组。
我们只需修改SocketMode0666即可。
修改并保存完成后,重新加载守护并重启socket即可:

sudo systemctl daemon-reload
sudo systemctl restart docker.socket

再次使用docker发现不再报错,重启机器后仍然可用。

标签:dial,run,permission,sudo,sock,var,docker,root
From: https://www.cnblogs.com/Zhou-Tx/p/17713177.html

相关文章

  • RunnerGo:一款全栈测试平台
    做软件测试的同学在工作时应该都碰到过这种情况:接口管理、接口测试用postman、Apipost等接口管理工具,性能测试用jmeter、loadrunner等性能测试工具,接口自动化则是jmeter脚本或者python脚本配合jenkins使用。这种情况极大的降低了研发效率,今天给大家推荐一款入选GiteeGVP的开源测......
  • vue3 浏览器“Uncaught runtime errors:” 全屏报错提示关闭
      在项目的vue.config.js中配置module.exports={devServer:{client:{overlay:false//编译错误时,取消全屏覆盖(建议关掉)}}}......
  • 工作这么多年,还分不清truncate、delete和drop?
    前言在使用SQL(StructuredQueryLanguage)进行数据库操作时,我们经常会遇到需要删除数据或表的情况。而在这些场景中,我们常常使用truncate、delete和drop这三个关键词。尽管它们都有删除数据的作用,但是它们之间还是存在一些差别。在本篇文章中,我们将深入探讨truncate、delete和drop......
  • delegate IDE buildrun actions actions to Maven
    IDEA中的maven项目下,可能出现这种情况:代码编辑器中无编译错误,通过maven的clean、compile、package进行各种操作也都没问题,但是单击绿色箭头运行(默认会先执行IDE本身的Build操作)却报:程序包xxx不存在使用IDEA运行maven项目,代码没有编译错误运行却报错:"程序包xxx不存在"的问题,......
  • Loadrunner发生请求的body中文实际是乱码的解决方法
    Loadrunner发生的json请求中,包含有中文。回放脚本,实际发送出去的body不是中文,而是乱码,这就导致请求不正确,影响测试的实际结果。要解决这个问题,先要把中文使用函数lr_convert_string_encoding转换一下,再在请求中引用该转换后的参数,回放的请求数据正常。示例如下:lr_convert_str......
  • 测试行业面临的问题及RunnerGo在工具层面如何解决的
    RunnerGo致力于打造成一款企业级全栈测试平台,旨在实现产品生命周期的闭环管理,帮助企业在整个产品生命周期中确保质量、降低风险,并提供卓越的用户体验。采用了较为宽松的Apache-2.0license开源协议,方便志同道合的朋友一起为开源贡献力量。 目前测试行业所面临的问题场景共享......
  • python的字典错误:RuntimeError: dictionary changed size during iteration
    1.在字典遍历过程中修改字典元素,报错RuntimeError:dictionarychangedsizeduringiteration错误代码:foriinphone:i=int(i)forkeyindict_phone.keys():ifkey==i:print(dict_phone.pop(key,'ss')) 改正foriinphone:i......
  • 软件测试|深入解析Docker Run命令:创建和启动容器的完全指南
    简介Docker是一种流行的容器化平台,用于构建、分发和运行应用程序。其中一个最基本且重要的Docker命令是dockerrun,用于创建和启动容器。本文将详细解析dockerrun命令的用途、参数和示例,帮助您全面掌握创建和启动容器的过程。dockerrun在Docker中,容器是运行应用程序的独立环......
  • dialer user 命令
    EnableRS-DCCfirst(dialeruser)先开启RS-DCC(RS=Resource-Shared)资源共享DCC#dialeruser命令用来开启共享DCC注:在没有开启共享DCC的情况下dialerbundle命令和dialer-group命令不生效上图是我配置玩dialerusera命令之后dialerbundle1和dialer-group......
  • P251——用RadialGradientBrush填充椭圆,并进行RotateTransform变换
    一、认识RadialGradientBrush(径向渐变)    1.坐标      RadialGradientBrush可以用来填充矩形(正方形)和椭圆(正圆),      填充区域使用比例坐标,      椭圆的坐标(0,0)和(1,1)构成的矩形内切于椭圆2.设置径向渐变颜色GradientStop<Gradi......