首页 > 解决方案 > 有没有一种好的和安全的方式来允许非 root 用户启动一个 docker 镜像?

问题描述

我有一个场景,我想让非 root 用户启动一个 docker 映像并运行它。这是一个非常简单的图像——我们有一个愚蠢的专有软件,它坚持阻塞某个端口,使该软件的并发运行变得不可能。我正在考虑用 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。但我不熟悉它。


推荐阅读