如何在非 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 ,它只需要我们用大写字母键入 ...
随机推荐
- 模块 pillow图像处理
Pillow概况 PIL是Python的一种图像处理工具. PIL支持大部分的图像格式,高效并强大. 核心库设计用来高速访问基于基于像素的数据存储,给这个通用的图像处理工具提供了坚实的基础. 一.读. ...
- Spring的jdbcTemplate操作
Spring的jdbcTemplate操作 dao层,使用jdbcTemplate Spring对不同的持久化层技术的支持,都进行了封装 JDBC Hibernate5.0 MyBatis JPA 相 ...
- css中(单冒号):after和(双冒号)::after的区别
:after是伪元素 .::after是伪类 什么是伪类? CSS伪类是添加到选择器的关键字,指定要选择的元素的特殊状态.例如,:hover可被用于在用户将鼠标悬停在按钮上时改变按钮的颜色. ::af ...
- 跑马灯效果、jquery封装、$.fn和$.extend方法使用
代码 index.html <!DOCTYPE html> <html lang="en"> <head> <meta charset=& ...
- 【PHP】PHP运算符
一. 概论: a) 在数学中的运算符和PHP当中的运算符可能有一些小小的区别,但是区别 不打,都是用来做计算的:唯一的区别是,PHP当中的运算符分类比较多 二. PHP当中运 ...
- 微信小程序引入腾讯地图API方法
微信小程序大热,在小程序过程中,我们很多时候都会用到地图.不管是企业的地址,还是商家的配送都会用到地图: 我在刚写地图这一块时,在网上也参考了很多网友的方法,始终有Bug(类似于地图拖拽是画面抖动,无 ...
- How to setup a Alpine Linux mirror
How to setup a Alpine Linux mirror Contents 1 Introduction 2 Setting up the cron job 3 Setting up ...
- 文本表格文件指定分隔符分列转Excel(java实现)
我的需求: 嗯,实习中遇到,需要过滤数据然后以指定的列名输出为excel 我是这样解决的: 写出到一个文本或者表格文件然后指定分隔符分列的输出excel,因为要设计去重处理. 我需要做的: 写一个文本 ...
- 用robotframework 标准库String解决由于存在千分位分隔符导致两个数值不相等的问题。
在编写robotframework自动化断言的过程中,我遇到了如下问题: 我想写一个两个金额判断是否相等的断言,其中一个金额是展示字段存在千分位分隔符,另一个金额是input带入字段,没有千分位分隔符 ...
- POj3017 dp+单调队列优化
传送门 解题思路: 大力推公式:dp[i]=min(dp[k]+max(k+1,i)){k>=0&&k<i},max(j,i)记为max(a[h]){h>k& ...