来自 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)的golang
或debian
图像会更容易。
- 1 回答
- 0 关注
- 161 浏览
添加回答
举报
0/150
提交
取消