「Docker」- ...dial unix /var/run/docker.sock: connect: permission denied... @20210411
问题描述
当使用非 ROOT 用户执行 docker 命令时,
产生如下错误信息:
# docker inspect -f . node:14-alpine 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/node:14-alpine/json: dial unix /var/run/docker.sock: connect: permission denied
或者如下错误信息:
Post http:///var/run/docker.sock/v1.19/auth: dial unix /var/run/docker.sock: permission denied. Are you trying to connect to a TLS-enabled daemon without TLS?
问题原因
这些都是同类问题,即非 Root 用户管理 Docker 服务时权限不足。
在 Docker 进程运行时,使用 Unix socket 文件,它由 root:root 所有,所以只有 root 能访问。
如果非 root 用户想要管理,则需要使用 sudo 命令,或者使用其他方法(见下文)。
解决办法
# groupadd docker # usermod -aG docker "target user" # systemctl restart docker.service
注意事项
使用 docker 组所授予的权限等同于 root 用户。对系统安全的影响,参考 Docker daemon attack surface 文档
参考文献
Manage Docker as a non-root user