如何在非 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/
本文首发于「愚一笔记」。
最新文章
- 【java基础学习】反射
- 在ubuntu上安装nodejs[开启实时web时代]
- Spring整合CXF之发布WebService服务
- confluence启动关闭
- erl0004 - ets 安全遍历
- ios--uitextfield动态限制输入的字数(解决方式)
- Windows消息传递函数SendMessage参数属性
- POJ 1804 Brainman(5种解法,好题,【暴力】,【归并排序】,【线段树单点更新】,【树状数组】,【平衡树】)
- mysql的event(事件)用法详解
- (2.1)mysql升级与降级
- zabbix3.2使用自带模板监控MySql
- spring cloud: Hystrix(三):健康指数 health Indicator
- Linux学习系列之一:在centos 7.5上安装nginx 以及简单配置
- phpstorm 调试 laravel
- Java基础-集合(12)
- pylot压力测试工具
- 4款基于jquery的列表图标动画切换特效
- C语言 常用的宏定义
- Cocos2d-x模版卸载及安装
- PHP函数声明(三)
热门文章
- poj - 2096 概率dp (找bug)
- python pdb 转载:https://www.linuxidc.com/Linux/2017-11/148329.htm
- Dome 多人人脸识别 face_recognition
- nginx代理图片访问
- Spring Boot整合Thymeleaf视图层
- NKOJ4238 天天爱跑步(【NOIP2016 DAY1】)
- C语言中static extern的使用
- Java Object类学习总结
- 【docker linux】linux系统镜像转化为docker镜像
- python通俗讲解闭包