非 root 用户管理 Docker

非 root 用户管理 Docker

问题描述

Docker 守护进程会绑定一个 Unix socket,默认只允许 root 用户操作

无法访问 Unix socket 的用户调用 Docker 将会出现类似下面的错误

console
1
permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.47/containers/json": dial unix /var/run/docker.sock: connect: permission denied

注意事项

版权与声明

本文部分技术核心取自以下文章,感谢这些文章的作者

  1. Docker 官方文档:Manage Docker as a non-root user

如果可能,请尽量阅读上方的原文章来学习

Debian 12

本文章是基于 Debian 12 的,其他的 GNU/Linux 操作系统可能会失效

下文注释

在下文代码块中,左上角写着#的为需要超级用户身份执行的权限;左上角写着$的只需要普通用户既可执行 以下代码只使用#$来表示权限等级,不再明文写sudo

危险

下文中会创建一个 docker 用户组,此用户拥有 root 级别的权限,您可能因此受到攻击,请三思而后行。如果您没有这个需求,请在每次调用 docker 时使用 sudo

跟着此文章执行产生的一切后果由您亲自承担

步骤

创建用户组

# bash
1
groupadd docker

将您的用户添加到 docker 用户组

# bash
1
sudo usermod -aG docker $USER

重新登录

登出并重新登录您的用户