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

来自 https://docs.docker.com/articles/baseimages/

我正在尝试构建一个基本映像来运行编译的 go 代码,来自:https : //github.com/tianon/dockerfiles/tree/master/true

  1. 我试图将 true.go 复制到 docker 中
    然后: exec: "/true": permission denied

  2. 还尝试对它进行 bash,然后:“bash”
    然后:在 $PATH 中找不到可执行文件

  3. 还尝试使用 debootstrap raring > /dev/null
    然后:“bash”:在 $PATH 中找不到可执行文件

你怎么做到这一点?


茅侃侃
浏览 164回答 1
1回答

噜噜哒

我不确定我是否完全遵循。来自链接项目的 Dockerfile 构建了一个除了可执行文件之外没有任何内容的图像 - 将没有 shell 或编译器,因此运行 bash 将是不可能的。它通过使用特殊的scratch基本映像来实现,它只是一个完全空的文件系统。如果您克隆存储库并使用 Dockerfile ( docker build -t go-image .)构建映像,它只会将可执行文件直接复制到映像中(注意 Dockerfile 复制的是可执行文件true-asm,而不是源代码true.go)。如果您随后使用docker run启动映像,它将运行它 ( docker run go-image)。那有意义吗?代码在本地(或由另一个容器)编译,编译后的独立可执行文件自行放置到映像中。通常,您不想这样做,而且在您刚开始时绝对不想这样做 - 使用包含基本工具(例如 shell)的golang或debian图像会更容易。
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go