当我运行docker build .
时,吐出的ID是图像的,这就是我认为提交给docker repo的东西。但是,当我运行docker commit <id>
时,它说这不是有效的容器ID。我通常通过在容器中启动图像然后提交该ID来解决此问题。但是,如果容器要求链接的容器才能运行,该怎么办?运行容器可能会花费很长时间,尤其是当构建过程在运行脚本中时。如果失败,或者需要链接的容器成功,则该过程将退出,并且我的容器将关闭,这将不允许我创建新镜像。有没有一种方法可以构建您的dockerfile并同时提交到存储库?备择方案?
最佳答案
Dockerfile旨在提供一种完全独立于主机的方式,可重复构建镜像,而无需依赖于主机配置的任何方面。这就是为什么链接不包含在各个构建步骤中的原因,因为它会使构建在构建时依赖于主机上的其他容器。因此,Dockerfile不是构建容器的唯一方法。
当您必须具有依赖于主机的构建环境时,请将Dockerfile用于基础部分,安装依赖项等,然后使用从您选择的脚本/配置管理系统运行的docker run来设置其他容器并进行实际构建。构建完成后,您可以提交生成的容器,用名称标记它,然后将其推送到存储库。
要解决帖子顶部的问题,如果您想给由Dockerfile生成的镜像命名,请使用docker tag image-id name
关于docker - Docker提交而不运行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26554801/