运行docker命令时,如果不用root或在命令前添加sudo,经常会遇上这样的提示
lawaias233@ILoveU:~ 16:39:$ docker ps -a Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.40/containers/json?all=1: dial unix /var/run/docker.sock: connect: permission denied第一反应是百度,但是突发奇想,希望自己来解决下问题。 于是尝试解决,根据提示,没有权限的是/var/run/docker.sock这个文件 于是先看下该文件的权限
lawaias233@ILoveU:~ 16:39:$ ll /var/run/docker.sock srw-rw---- 1 root docker 0 Oct 15 09:42 /var/run/docker.sock=可见,该文件只对root用户和docker用户组下的用户提供读写权限,于是我们有了两个思路 一是修改文件权限,使得它对root和docker用户组以外的other用户也开放读写权限 二是将当前用户添加进入docker用户组.
方法一不够安全 但也给出相应的实现,只需输入 将read权限开放给other,经过尝试,只给read不给write是可以执行的…但是也许会存在问题?为了保险可以把write也给上,即将664改为666
sudo chmod 664 /var/run/docker.sock方法二 使用命令
sudo usermod -aG docker 您的用户名稍作解释,-G大写表示多属,即将该用户放入一系列组中,-a表示为append,即在用户现有的组中添加新的组。 这里的意思就是,在不改变用户原有的组情况下,将其加入docker组中。
不过修改完后输入groups命令还是没有显示docker组… 我盲猜是bash还没更新信息的问题,于是退出后重新ssh,再输入groups 成功!
再来另一个加入docker群组的方法吧~用文本编辑器打开/etc/gourp文件,在最下面(假如你刚安装docker不久的话),有一个docker,在最后面添加自己的用户名,如果已经有其他用户在该群组中,只需要用逗号隔开即可!
docker:x:999:lawaias233,想要添加的名字现在,执行docker命令不再需要sudo啦! *严谨些,应该是该用户不需要sudo… **不对,如果有人用的是方法一的话确实也没错…emmmm [应该不会有人用方法一吧?不会吧不会吧?]
