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

时间:2015-02-03 15:25:46

标签: go docker

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

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

  1. 我试图复制到docker中true.go
    然后:exec:“/ true”:权限被拒绝
  2. 还试图打入它,然后:“bash”
    然后:$ PATH中找不到可执行文件
  3. 还尝试使用debootstrap raring raring> / dev / null
    然后:“bash”:在$ PATH中找不到可执行文件
  4. 你是怎么做到的?

    由于

1 个答案:

答案 0 :(得分:2)

我不确定我是完全跟随的。

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

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

这有意义吗?代码在本地(或由另一个容器)编译,编译的独立可执行文件本身放在图像中。

一般情况下,您不想这样做,绝对不是在您开始使用时 - 您可以更轻松地使用golangdebian图像基本工具,如shell。