「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


posted @ 2021-04-11 18:51  研究林纳斯写的  阅读(229)  评论(0编辑  收藏  举报