如何在 docker RUN 命令中为 sudo 别名

如何在 docker RUN 命令中为 sudo 别名

我编写了以下 Docker 命令,该命令仅运行一个名为的 bash 脚本build

RUN cd dir && ./build

但是,该脚本使用sudo,它在我的容器中不存在。如何为它创建一个别名,sudo它不会解析任何内容,因此sudo something只需按somethinginside运行build,而不编辑build脚本?

答案1

为了使用别名,您必须编辑脚本并在脚本开头使用 sudo 的行上方添加以下内容。

sudo() {
    "$@"
}
export -f sudo

或者,您可以通过创建一个不具有sudo.然后,您可以运行新文件而不是./build

RUN cd dir && sed -e 's/sudo //g' ./build > ./buildme && chmod +x ./buildme && ./buildme

首先,sed命令删除sudo并且-e选项回显输出而不编辑原始文件。使用以下命令将输出重定向到名为“buildme”的新文件> ./buildme

sudo -e 's/sudo //g' ./build > ./buildme

然后,chmod用于使新文件可执行:

chmod -x ./buildme

最后,./buildme使用 代替./build

./buildme

相关内容