从 https://docs.docker.com/articles/baseimages/
我正在尝试构建一个基本映像来运行编译的go代码,来自: https://github.com/tianon/dockerfiles/tree/master/true
你是怎么做到的?
由于
答案 0 :(得分:2)
我不确定我是完全跟随的。
链接项目中的Dockerfile构建一个除了可执行文件之外没有任何内容的图像 - 没有shell或编译器,因此运行bash是不可能的。它通过使用特殊的scratch
基本映像来完成此操作,该映像只是一个完全空的文件系统。
如果克隆存储库并使用Dockerfile(docker build -t go-image .
)构建映像,它只会将可执行文件直接复制到映像中(注意Dockerfile复制可执行文件true-asm
,而不是源代码true.go
)。然后,如果您使用docker run
启动图片,则会运行该图片(docker run go-image
)。
这有意义吗?代码在本地(或由另一个容器)编译,编译的独立可执行文件本身放在图像中。
一般情况下,您不想这样做,绝对不是在您开始使用时 - 您可以更轻松地使用golang
或debian
图像基本工具,如shell。