Linux普通用户使用Docker
1. 简介
Docker 是一款开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,然后发布到任何流行的 Linux 或 Windows 操作系统的机器上,也可以实现虚拟化。容器是完全使用沙箱机制,相互之间不会有任何接口。
以上摘自**《百度百科——Docker》**
Docker 为开发者带来了极大便利性,因此被广泛使用于工作学习中。然而,Docker 默认只有拥于 root 权限的用户才能使用,这主要是为了安全,具体可参见 non-root user how to install docker?。不过,对于不那么要求安全性的场景,或者服务器上的部分普通用户值得信赖,能安全使用其被赋予的权限,则可以考虑给这部分用户使用 Docker 的权限。
【注】以下操作基本都需要 root 权限(除最后一条外),只有拥有 root 用户权限的才能进行这些操作;进行完这些操作后,被赋予权限的普通用户才能使用 Docker。
2. 安装 Docker
如果你的主机上尚未安装 Docker,则可以参见官方安装教程安装好 Docker。
3. 普通用户使用 Docker
3.1 问题
普通用户直接使用 Docker 会报错权限不足:
1 | docker: Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Post http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/create: dial unix /var/run/docker.sock: connect: permission denied. |
这主要是因为 Docker 进程使用 Unix Socket,而 /var/run/docker.sock
需要 root 权限才能进行读写操作。
因此,如果不考虑安全问题的话,也可以使用 root 权限直接改写
/var/run/docker.sock
文件的权限,使得其对所有普通用户都有读写权限:
1 sudo chmod 666 /var/run/docker.sock
3.2 方案
参考官方说明,使用 root 权限创建一个 docker
组,并将普通用户加入到该组中,然后刷新一下 docker
组使其修改生效即可:
1 | sudo groupadd docker # 有则不用创建 |
【注】如果在运行上述命令时,
USER
一直是登录状态,则也要使用newgrp docker
来刷新以获取改变。
如果需要让普通用户在 Docker 中也能使用显卡,则需要进一步配置,具体参见 Nvidia 提供的官方指导。
附录
参考资料: