前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >Linux普通用户使用Docker

Linux普通用户使用Docker

作者头像
hotarugali
发布2022-03-07 15:21:46
发布2022-03-07 15:21:46
8K00
代码可运行
举报
运行总次数:0
代码可运行

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 会报错权限不足:

代码语言:javascript
代码运行次数:0
运行
复制
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 文件的权限,使得其对所有普通用户都有读写权限: sudo chmod 666 /var/run/docker.sock

3.2 方案

参考官方说明,使用 root 权限创建一个 docker 组,并将普通用户加入到该组中,然后刷新一下 docker 组使其修改生效即可:

代码语言:javascript
代码运行次数:0
运行
复制
sudo groupadd docker			# 有则不用创建
sudo usermod -aG docker USER	# USER 为加入 docker 组的用户
newgrp docker					# 刷新 docker 组
docker run hello-world			# 测试无 root 权限能否使用 docker

【注】如果在运行上述命令时,USER 一直是登录状态,则也要使用 newgrp docker 来刷新以获取改变。

如果需要让普通用户在 Docker 中也能使用显卡,则需要进一步配置,具体参见 Nvidia 提供的官方指导

附录

参考资料:

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022-03-05,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 1. 简介
  • 2. 安装 Docker
  • 3. 普通用户使用 Docker
    • 3.1 问题
    • 3.2 方案
  • 附录
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档