docker - 有没有一种好的和安全的方式来允许非 root 用户启动一个 docker 镜像?
问题描述
我有一个场景,我想让非 root 用户启动一个 docker 映像并运行它。这是一个非常简单的图像——我们有一个愚蠢的专有软件,它坚持阻塞某个端口,使该软件的并发运行变得不可能。我正在考虑用 docker 解决这个问题。
问题是普通用户(它是编译过程的一部分)应该能够启动它。我该如何以理智和安全的方式进行呢?
解决方案
如果所需的docker
命令是静态的,请创建一个简单的启动脚本,将其存储/usr/local/bin
并使其可执行。输入/etc/sudoers
以允许所需用户使用 sudo 运行此命令而无需密码。
例如创建文件/usr/local/bin/alpine.docker
:
#! /bin/sh
docker run --rm -it alpine sh
使脚本安全(非 root 用户应该无法编辑它):
sudo chown root:root /usr/local/bin/alpine.docker
设置合理的权限并使其可执行:
sudo chmod 554 /usr/local/bin/alpine.docker
/etc/sudoers
在中创建一个条目visudo
:
username ALL = (root) NOPASSWD: /usr/local/bin/alpine.docker
现在用户username
可以在sudo alpine.docker
没有密码的情况下运行。
警告:
docker
如果用户不应该具有 root 权限,请不要将他们添加到组中。
笔记:
对于此解决方案,您需要安装sudo
. 但是用户username
不需要是 group 的成员sudo
。
笔记2:
使用 policykit / 可以进行类似的设置pkexec
。但我不熟悉它。
推荐阅读
- java - 实例变量与?
- python - 如何在 Django Rest Framework 中过滤包含条件的数组?
- javascript - 使用 stopImmediatePropagation 方法禁用 routerLink
- vulkan - Vulkan 顶点输入属性归一化(转换)
- java - 使用 ProGuard 时无法构建发布 APK
- wso2 - 如何使用带有点和 at 字符的属性?
- excel - 用 vlookup 公式填充新添加的列的宏
- docker - docker stats 中显示的内存到底是什么意思?
- numpy - 为什么 asarray 和 list 反应不同?
- reactjs - 无法在 React/Typescript 中动态设置状态