频繁提交 docker 容器是好习惯吗?
Is it good practice to commit docker container frequently?
我在内部使用 WebSphere Liberty。由于 WebSphere Liberty 需要频繁 xml 编辑,这对于 Dockerfile 命令是不可能的。我必须 docker- 不时提交容器,以便其他人使用我的图像。
命令如下:
docker commit -m "updated sa1" -a "Song" $id company/wlp:v0.1
大学正在做与图像类似的事情,他们继续每天多次docker提交容器。
有一天我们要在生产环境中部署映像。
Q1:是否建议频繁 docker-提交的做法?
Q2:有没有留下什么潜在的问题?
Q3:它会创建一个额外的层吗?我看了docker-commit document,里面没有提到是否创建了另一层,我认为它的意思是没有。
我不会使用 docker 提交,
这似乎是个好主意,但您不能像使用 Docker 文件那样随意复制图像,而且一旦完成,您也无法更改基本图像,所以很难为底层 os 基础映像提交安全补丁。
如果您采用完整的 Docker 文件方法,您可以重新 运行 docker 构建,您将再次获得相同的图像。您还可以更改基本图像。
所以我的经验法则是,如果你正在创建一个临时工具并且你不关心重用或随意复制图像那么 commit 使用起来很方便。
据我了解Docker每个容器镜像都有两部分,这是一组构成镜像大部分的只读层,然后是一个可写的小层,可以在其中提交任何更改。
当您 运行 提交 docker 继续并创建一个新图像时,这是基础图像加上您所做的更改(创建的图像是一个不同的图像),它将代码复制到薄的可写层。因此,不会创建新的只读层,它只会将您创建的增量存储到薄的可写层中。
不要只相信我的话,请相信 Redhats advice
为清楚起见,第 5 步中的文章说:
5) Don’t create images from running containers – In other terms, don’t
use “docker commit” to create an image. This method to create an image
is not reproducible and should be completely avoided. Always use a
Dockerfile or any other S2I (source-to-image) approach that is totally
reproducible, and you can track changes to the Dockerfile if you store
it in a source control repository (git).
我在内部使用 WebSphere Liberty。由于 WebSphere Liberty 需要频繁 xml 编辑,这对于 Dockerfile 命令是不可能的。我必须 docker- 不时提交容器,以便其他人使用我的图像。
命令如下:
docker commit -m "updated sa1" -a "Song" $id company/wlp:v0.1
大学正在做与图像类似的事情,他们继续每天多次docker提交容器。
有一天我们要在生产环境中部署映像。
Q1:是否建议频繁 docker-提交的做法?
Q2:有没有留下什么潜在的问题?
Q3:它会创建一个额外的层吗?我看了docker-commit document,里面没有提到是否创建了另一层,我认为它的意思是没有。
我不会使用 docker 提交,
这似乎是个好主意,但您不能像使用 Docker 文件那样随意复制图像,而且一旦完成,您也无法更改基本图像,所以很难为底层 os 基础映像提交安全补丁。
如果您采用完整的 Docker 文件方法,您可以重新 运行 docker 构建,您将再次获得相同的图像。您还可以更改基本图像。
所以我的经验法则是,如果你正在创建一个临时工具并且你不关心重用或随意复制图像那么 commit 使用起来很方便。
据我了解Docker每个容器镜像都有两部分,这是一组构成镜像大部分的只读层,然后是一个可写的小层,可以在其中提交任何更改。
当您 运行 提交 docker 继续并创建一个新图像时,这是基础图像加上您所做的更改(创建的图像是一个不同的图像),它将代码复制到薄的可写层。因此,不会创建新的只读层,它只会将您创建的增量存储到薄的可写层中。
不要只相信我的话,请相信 Redhats advice
为清楚起见,第 5 步中的文章说:
5) Don’t create images from running containers – In other terms, don’t use “docker commit” to create an image. This method to create an image is not reproducible and should be completely avoided. Always use a Dockerfile or any other S2I (source-to-image) approach that is totally reproducible, and you can track changes to the Dockerfile if you store it in a source control repository (git).