【发布时间】:2021-01-03 15:48:20
【问题描述】:
我遇到了这个博客:using go as a scripting language 并尝试创建一个自定义图像,我可以使用它来运行 golang 脚本,即
FROM golang:1.15
RUN go get github.com/erning/gorun
RUN mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc
RUN echo ':golang:E::go::/go/bin/gorun:OC' | tee /proc/sys/fs/binfmt_misc/register
失败并出现错误:
mount: /proc/sys/fs/binfmt_misc: permission denied.
ERROR: Service 'go_saga' failed to build : The command '/bin/sh -c mount binfmt_misc -t binfmt_misc /proc/sys/fs/binfmt_misc' returned a non-zero code: 32
它是只读文件系统,因此也无法更改权限。我在这里尝试完成的任务有据可查here。请帮我解决以下问题:
- 这是否可能,即挂载
/proc/sys/fs/binfmt_misc并写入文件:/proc/sys/fs/binfmt_misc/register? - 如果是,该怎么做?
我想,如果我们可以在容器中运行 golang 脚本,那就太好了。
【问题讨论】:
-
为什么要在容器内执行此操作?您是否需要对主机和其他容器进行隔离,或者安全不是问题?
-
目的只是为了能够使用 Golang 编写脚本,例如用于 CI 任务等。通常我们为所有此类任务编写 shell 脚本。我认为最好不要管主机操作系统并从容器中做所有事情。只需使用主机卷。我在我的 go-projects 中使用脚本来生成模拟、测试覆盖率、db-wait 脚本、git 挂钩、集成测试等。感谢您的关注。
标签: linux docker go linux-kernel