为了账号安全,请及时绑定邮箱和手机立即绑定

构建用于运行已编译的 go 代码的小容器

构建用于运行已编译的 go 代码的小容器

Go
茅侃侃 2021-09-13 15:23:29
来自 https://docs.docker.com/articles/baseimages/我正在尝试构建一个基本映像来运行编译的 go 代码,来自:https : //github.com/tianon/dockerfiles/tree/master/true我试图将 true.go 复制到 docker 中然后: exec: "/true": permission denied还尝试对它进行 bash,然后:“bash”然后:在 $PATH 中找不到可执行文件还尝试使用 debootstrap raring > /dev/null然后:“bash”:在 $PATH 中找不到可执行文件你怎么做到这一点?
查看完整描述

1 回答

?
噜噜哒

TA贡献1784条经验 获得超7个赞

我不确定我是否完全遵循。

来自链接项目的 Dockerfile 构建了一个除了可执行文件之外没有任何内容的图像 - 将没有 shell 或编译器,因此运行 bash 将是不可能的。它通过使用特殊的scratch基本映像来实现,它只是一个完全空的文件系统。

如果您克隆存储库并使用 Dockerfile ( docker build -t go-image .)构建映像,它只会将可执行文件直接复制到映像中(注意 Dockerfile 复制的是可执行文件true-asm,而不是源代码true.go)。如果您随后使用docker run启动映像,它将运行它 ( docker run go-image)。

那有意义吗?代码在本地(或由另一个容器)编译,编译后的独立可执行文件自行放置到映像中。

通常,您不想这样做,而且在您刚开始时绝对不想这样做 - 使用包含基本工具(例如 shell)的golangdebian图像会更容易。


查看完整回答
反对 回复 2021-09-13
  • 1 回答
  • 0 关注
  • 161 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信