在docker中,与commit和dockerfile的区别

Hak*_*Kim 6 docker

当我制作泊坞镜图像时,

使用docker文件通过commit命令和build命令制作图像有什么不同吗?我说在图像大小和算法方面存在差异.

And*_*ndy 6

是的。大小会有差异。

docker commit基本上是对“正在运行”容器的当前状态进行“快照”并将其保存为图像。这基本上意味着如果您的“运行”容器正在生成日志文件、更新包或进行文件更改,它们将被保存到映像中。每次运行时docker commit,都会创建一个新图像。

另一方面,docker build通过引用脚本(Dockerfile)来创建镜像。通常,docker build只有在检测到更改时才会创建新图像。

两种方法的图像大小取决于您在两种情况下所做的工作,docker build将为您提供一致的图像大小,因为它是基于Dockerfile. 和docker commit图像的大小取决于容器的当前状态。如果你在容器运行后删除了一堆东西,你最终可能会得到更小的镜像,反之亦然。

简而言之,它们相似但用途不同。然后最终产品docker build本质上是一次提交。

换个比喻docker build来说就像git clone,而docker commit就像git commit

  • 不确定我 100% 同意这一点。正如 OP 所要求的那样,“算法”没有区别,如果您在构建和 Dockerfile 中执行完全相同的操作,那么大小也应该相同(因为构建只是在做同一件事的自动化版本)。我的2c。 (4认同)