问题:无权限使用docker命令

  1. 报错信息
    [test@pri00 ~]$ docker ps
    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.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied
    
  2. 如果着急可跳过中间分析过程,直接看总结命令可解决。

分析

  1. 根据报错信息(/var/run/docker.sock: connect: permission denied),可知,用户无操作权限
  2. 我们首先需要查看/var/run/docker.sock权限
    1. 情况一:只有root用户和docker组才有rw权限

      $ ll /var/run/docker.sock
      srw-rw---- 1 root docker 0 Mar 21 10:59 /var/run/docker.sock
      
    2. 情况二:只有root用户和root组才有rw权限

      $ ll /var/run/docker.sock
      srw-rw---- 1 root root 0 Mar 21 10:59 /var/run/docker.sock
      

解决

  1. 知道原因后,答案也就呼之欲出了:
    1. 方案一:使用sudo权限

      sudo docker ps
      
    2. 方案二:将当前用户(笔者测试机器用户是test)加入docker组(推荐

      sudo chown root:docker /var/run/docker.sock # 修改docker.sock权限为root:docker
      sudo groupadd docker          # 添加docker用户组 
      sudo gpasswd -a $USER docker  # 将当前用户添加至docker用户组
      newgrp docker                 # 更新docker用户组
      

总结

  1. 问题出在用户为访问/var/run/docker.sock的权限,只需给用户增加权限即可
  2. 操作命令
    sudo chown root:docker /var/run/docker.sock # 修改docker.sock权限为root:docker
    sudo groupadd docker          # 添加docker用户组 
    sudo gpasswd -a $USER docker  # 将当前用户添加至docker用户组
    newgrp docker                 # 更新docker用户组
    
Logo

华为云1024程序员节送福利,参与活动赢单人4000元礼包,更有热门技术干货免费学习

更多推荐