代码之家  ›  专栏  ›  技术社区  ›  Qing Song

频繁提交docker容器是好的做法吗?

  •  3
  • Qing Song  · 技术社区  · 7 年前

    我正在内部使用WebSphere Liberty。因为WebSphere Liberty需要频繁的xml编辑,这在Dockerfile命令中是不可能的。我需要docker不时提交容器,以便其他人使用我的图像。

    命令如下:

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

    大学也在做类似的事情形象,他们继续码头工人提交集装箱几次,每天。

    总有一天我们会在生产中部署映像。

    问:是否建议经常性码头工人的做法?

    问题2:有没有留下任何潜在的问题?

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

    1 回复  |  直到 6 年前
        1
  •  4
  •   krystan honour    6 年前

    我不会用docker commit,

    这看起来是一个非常好的主意,但是你不能像使用Dockerfile那样随意地复制图像,而且一旦完成,你也不能更改基本图像,因此很难提交,例如,对底层os基本图像的安全补丁。

    如果你使用完整的Dockerfile方法,你可以重新运行docker build,你会得到同样的图像。你可以改变基本图像。

    因此,我的经验法则是,如果您正在创建一个临时工具,而您不关心重用或随意复制图像,那么commit很方便使用。

    据我所知,Docker每个容器映像都有两个部分,一组只读层构成映像的大部分,然后是一个小层,在提交任何更改时都是可写的。

    当您运行commit docker继续并创建一个新的映像这是基本映像加上您所做的更改(创建的映像是一个不同的映像),它会将代码复制到瘦的可写层。因此,一个新的只读层并不是创建的,它只是将生成的增量存储到一个薄的可写层中。

    别相信我的话 Redhats advice

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

    5) 不要从运行容器的其他方面创建图像,不要 使用“docker commit”创建映像。创建图像的方法 不可复制,应完全避免。总是使用 Dockerfile或任何其他完全 可复制,如果存储 它位于源代码管理存储库(git)中。

    推荐文章