当我运行docker build .
时,吐出的ID就是图像,这就是我认为已经提交给docker repo的内容。但是当我运行docker commit <id>
时,它表示它不是有效的容器ID。我通常通过在容器中启动图像然后提交该ID来解决这个问题。但是,如果容器需要链接容器运行,我该怎么办?运行容器可能需要很长时间,尤其是在构建过程位于运行脚本中时。如果此操作失败,或者要求链接容器成功,则进程将退出,我的容器将关闭,这不允许我创建新映像。有没有办法建立您的dockerfile并同时提交到repo?替代?
答案 0 :(得分:3)
Dockerfile旨在提供完全独立于主机的方式来重复构建映像,而不依赖于主机配置的任何方面。这就是为什么链接不包含在单个构建步骤中的原因,因为它会在构建时使构建依赖于主机上的其他容器。因为这个Dockerfiles不是构建容器的唯一方法。
当您必须拥有依赖于主机的构建环境时,请使用Dockerfile作为基础部件,安装依赖项等,然后使用docker从您选择的脚本/配置管理系统运行来设置其他容器并执行实际构建。构建完成后,您可以提交生成的容器,使用名称对其进行标记,然后将其推送到repo。
要解决帖子顶部的问题,如果要为Dockerfile生成的图像命名,请使用docker tag image-id name