如何在非 sudo 用户下运行 docker 命令?
当我们在一台 Linux 系统中安装了 Docker 后, 有时候会遇到下面这样的错误, 我们在运行 docker 的命令时必须加上 sudo, 例如: sudo docker ps, 但是我们其实更希望能够直接通过 docker ps 来运行 docker 命令。

那么我们可以如何解决这样的问题呢?
可以参考如下步骤:
创建 docker 的用户组:
sudo groupadd docker将当前 user 加入 docker 的用户组:
sudo usermod -aG docker $USER重启 docker:
sudo snap restart docker /
sudo service docker restart /
sudo /etc/init.d/docker restart
- 从当前 shell 中登出用户并再次登陆,以重新评估当前的用户组的权限。
切换当前会话到新 group 或者重启会话。可以通过
newgrp - docker切换当前用户组到 docker 用户组。
注意:这一步是必须的,否则 groups 命令获取到的是缓存的用户组信息,刚添加的用户组信息可能还未能生效,所以
docker ps执行时同样会有错。
一般情况下,操作到这一步就可以解决该问题了,但有时还会遇到下面的问题,导致仍然无法直接通过 docker ps 访问 docker 命令。

如果在确定了用户组的设置是正确的情况下,再次遇到这个问题,就是由于 /var/run/docker.sock 文件的权限不够导致的。可以按如下操作解决:
ls -lrth /var/run/docker.sock查看 docker.sock 的权限。会发现 docker 用户组其实是没有读写权限的。

sudo chmod 666 /var/run/docker.sock更改权限。

ls -lrth /var/run/docker.sock再次查看 docker.sock 的权限。这样就可以了。

这样就可以直接通过 docker ps 这样的方式操作 docker 命令,而不用每次都加上 sudo 了。
参考文档:
- https://docs.docker.com/install/linux/linux-postinstall/
- https://techoverflow.net/2018/12/15/how-to-fix-docker-got-permission-denied-while-trying-to-connect-to-the-docker-daemon-socket/
本文首发于「愚一笔记」。
如何在非 sudo 用户下运行 docker 命令?的更多相关文章
- 一个带bash,带glibc,中国时区,非root用户可运行crond命令的基于alpine镜像的Dockerfile
这个镜像现在说起来简单, 带bash(增加执行脚本的兼容性,带GLIBC,中国时区,非root用户可运行crond命令-安全) 但让我开始陷入时,真的让我有段时间有点爆了. 比如,将filebeat文 ...
- 非root用户如何使用docker命令
docker命令默认只能root使用的,但我们可以赋权给其他用户,使用时先照常新建用户: [root@10 ~]# useradd docker [root@10 ~]# passwd docker ...
- linux下将普通用户加入到docker组,使它可以运行docker命令
方法特别简单 gpasswd -a ${USER} docker eg: gpasswd -a jenkins docker 然后使用jenkins用户就可以执行docker命令了
- ubuntu下非root用户下获得使用wireshark的权限
在非root用户下不能使用wireshark用来抓包,所以需要进行以下操作: sudo groupadd wireshark sudo chgrp wireshark /usr/bin/dumpcap ...
- zzw原创_非root用户下安装nginx
想自己安装nginx,又不相用到root用户. 非root用户下(本文为用户bdctool)来ngnix安装,要依赖pcre库.zlib库等, 1. 下载依赖包:下载地址 pcre(www.pcre. ...
- 非GUI模式下运行JMeter和远程启动JMeter
JMeter是一款非常不错的免费开源压力测试工具,越来越多的公司在使用.不过,在使用过程中可能会存在一些问题,比如:GUI模式非常消耗资源,单个客户端测试无法达到目标压力.而使用非 GUI 模式,即命 ...
- ASP.NET CORE下运行CMD命令
ASP.NET CORE下运行CMD命令,用以前的ASP.NET 的命令System.Diagnostics.Process.Start("notepad");这样是可以运行出记事 ...
- linux非root用户下安装软件,搭建生产环境
之前的用实验室的服务器,因为某些原因,使用的用户没有root权限.linux的非root用户很多软件无法安装,非常的不方便.我的方法是使用brew来代替系统的包管理工具.brew是最先用在mac上的包 ...
- 用大写字母输入 Linux 命令,实现以 sudo 用户权限运行
我们知道,一些 Linux 命令是要通过 sudo 权限才能运行的,这需要我们每次使用这些命令时在前面加一个 sudo ,十分繁琐.今天给大家介绍一个好用的工具 SUDO ,它只需要我们用大写字母键入 ...
随机推荐
- Centos7部署k8s[v1.16]高可用[keepalived]集群
实验目的 一般情况下,k8s集群中只有一台master和多台node,当master故障时,引发的事故后果可想而知. 故本文目的在于体现集群的高可用,即当集群中的一台master宕机后,k8s集群通过 ...
- windows server 2016 远程桌面mstsc DPI(更改文本、应用和其他项目大小) 设置
windows server 2016 远程桌面mstsc DPI 设置 在高分辨率机器2K,4K,8K,登入使用window远程桌面mstsc时,登入后虽然分辨率变成了和cilent一样分辨率 但是 ...
- Python——matplotlib基础绘图函数示例
1. 2.饼图 (1) import matplotlib.pyplot as plt labels='frogs','hogs','dogs','logs'% sizes=[15,30,45,10] ...
- CVE-2020-2551复现过程
项目地址 cnsimo/CVE-2020-2551 CVE-2020-2551 weblogic iiop 反序列化漏洞 该项目的搭建脚本在10.3.6版本经过测试,12版本未测试. 环境 kali+ ...
- winsocket编程笔记(一)
前言: 因为疫情原因,现在一直在网上授课,教师在讲述winsocket这一课程时没有给予我们课本,只有毫不相搭的linux环境的socket编程视频,故于此(开学第七周)总结winsocket的内容. ...
- AI学习笔记:特征工程
一.概述 Andrew Ng:Coming up with features is difficult, time-consuming, requires expert knowledge. &quo ...
- Js闭包练习2020031801
<!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01//EN" "http://www.w3.org/TR/html4/stri ...
- 《Three.js 入门指南》3.1.1 - 基本几何形状 -圆形(CircleGeometry)
3.1 基本几何形状 圆形(CircleGeometry) 说明: 可以创建圆形或者扇形 构造函数: THREE.CircleGeometry(radius, segments, thetaStart ...
- Java运行时数据区域划分
Java虚拟机在执行Java程序的过程中会把它所管理的内存划分为若干个不同的数据区域.这些区域都有各自的用途,以及创建和销毁时间.根据<Java虚拟机规范(Java SE 7版>的规定,J ...
- Java中toString()与new String()
Java中toString()与new String(): 1.错误演示: FileInputStream fileIn = new FileInputStream(filePath);byte[] ...