经常提交docker容器是一种好习惯吗?

问题描述 投票:3回答:1

我正在使用WebSphere Liberty。由于WebSphere Liberty需要频繁的xml编辑,这在Dockerfile命令中是不可能的。我必须不时地使用docker-commit容器,让其他人使用我的图像。

命令如下:

docker commit -m "updated sa1" -a "Song" $id company/wlp:v0.1

大学正在对图像做类似的事情,他们继续每天都在码头工作几次。

有一天,我们将在生产中部署图像。

Q1:建议经常使用docker-commit的做法吗?

Q2:它是否会留下任何潜在的问题?

问题3:它是否会创建一个额外的图层?我读了docker-commit document,它没有提到它是否创造了另一层,我认为它意味着没有。

docker websphere-liberty open-liberty
1个回答
4
投票

我不会使用docker commit,

这似乎是一个非常好的主意,但你无法像使用Dockerfile那样随意重现图像,并且一旦完成就无法更改基本图像,因此很难提交说例如安全性修补底层的os基础映像。

如果你采用完整的Dockerfile方法,你可以重新运行docker build,你将再次获得相同的图像。并且您可以更改基本图像。

所以我的经验法则是,如果你正在创建一个临时工具,而你不关心重用或随意重现图像,那么提交是方便使用。

据我了解Docker,每个容器图像都有两个部分,这是一组构成图像大部分的只读层,然后是一个可写入的小层,可以提交任何更改。

当您运行commit docker并继续创建新图像时,这是基本图像加上您所做的更改(创建的图像是一个独特的图像),它会将代码复制到精简可写层。因此,不创建新的只读层,它只存储您在可写可写层中所做的增量。

不要只听我的话,拿Redhats advice

为清楚起见,第5步中的文章说:

5)不要从正在运行的容器创建图像 - 换句话说,不要使用“docker commit”来创建图像。这种创建图像的方法不可再现,应该完全避免。始终使用Dockerfile或任何其他完全可重现的S2I(源到图像)方法,如果将其存储在源控制存储库(git)中,则可以跟踪对Dockerfile的更改。

© www.soinside.com 2019 - 2024. All rights reserved.