【问题标题】:How to build docker image without having to use the sudo keyword如何在不使用 sudo 关键字的情况下构建 docker 镜像
【发布时间】:2022-08-18 15:11:18
【问题描述】:

我正在构建一个 node.js 应用程序,它允许人们在我的服务器上运行代码,并且我正在使用 Docker 将用户的代码容器化,这样它就不会窃取数据或通常做他们应该做的事情\'t。我有一个 Docker 映像模板,它被复制到用户的个人应用程序目录中,我想使用我编写的这个函数来构建映像:

const util = require(\"util\");
const exec = util.promisify(require(\"child_process\").exec);

async function buildContainer(path, dockerUser) {
    return await exec(`sudo docker build -t user_app_${dockerUser} ${path}`);
}

但是,当我使用它时,它需要我输入我的 sudo 密码,就好像我在终端窗口中手动执行它一样。

无论如何我可以运行这个函数而不必包含sudo 关键字?

提前致谢。

  • 实际上我只是在这里找到了我自己问题的答案:askubuntu.com/questions/477551/…
  • 请注意,这里的代码非常危险:如果用户能够控制dockerUserpath 环境变量,并且知道他们有sudo 访问权限,他们可以以root 身份运行任何命令,从而接管主人。至少,将命令作为单词数组传递,或者更好的是,使用Docker SDK 而不是向docker 发送。 (您仍然需要访问 Docker 套接字的权限,并且粗心的容器设置仍然可以使主机成为 root。)
  • 用户无权访问任何一个变量,dockerUserpath 变量是使用集合中其文档中的应用程序 MongoDB ID 在服务器端生成的,因此应该没问题。我正在使用 dockerode npm 包来管理容器

标签: node.js docker dockerfile


【解决方案1】:

您可以使用 podman 代替 docker。 在那里你不需要 sudo。 您拥有最多的命令,例如 docker。 例子:

podman build
podman run 

等等...

希望有帮助:)

问候

【讨论】:

    猜你喜欢
    • 2017-04-09
    • 2020-04-06
    • 1970-01-01
    • 2016-10-20
    • 2016-11-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-09-22
    相关资源
    最近更新 更多