Solution:docker用户权限解决方案

  • docker

posted on 08 Jan 2020 under category 技能 修复

问题

非root用户执行docker相关命令时,会出现如下错误:

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.39/containers/json: dial unix /var/run/docker.sock: connect: permission denied

原因

docker进程使用Unix Socket而不是使用TCP端口,而默认情况下,Unix Socket属于root用户,所以非root用户不能访问。

解决方案

  • 使用sudo命令

    sudo docker ps -a
    

    缺点:每次带sudo不方便,还得输密码。

  • 将用户加入docker用户组

    sudo gpasswd -a $USER docker #将当前用户加入docker组
    newgrp docker #更新用户组
    docker ps -a #docker命令
    

    原因:安装docker时,会创建docker用户组,会默认赋予Unix Socket的权限。