Docker新手在这里。 Docker是否类似于GitHub,因为您可以提交对映像的更改,而无需从头开始重新构建映像?如果是,则使用什么命令来执行此操作?
现在,每次更改代码时,我都会使用docker system prune -a
删除当前的Docker映像,并使用docker build -t appname.
重建映像。
答案 0 :(得分:1)
无需先删除现有图像,您可以重建并创建一个具有相同图像名称的标签。图像本身被解析为不变的图像ID,该ID不发生变化。要更改图像的内容,必须构建具有新图像ID的新图像。然后要使用它,您需要启动引用该新图像的新容器。
从头开始重建将重用缓存,因此,只有Dockerfile中发生更改或更改后的命令才会进行重建。与先前构建相同的Dockerfile开头的层将在映像之间重用。这些层需要事先在此主机上构建(或者,如果在临时云环境中构建,则有一个--cache-from
选项)。顺序对于构建缓存至关重要,复制到映像中的文件及其元数据的确切哈希也是如此。
重建具有相同图像名称的图像后,docker image prune
命令很有用。在这种情况下,泊坞窗将删除不再具有指向它的引用(图像名称)且当前没有容器使用它的旧图像ID。请注意,这还将从构建缓存中删除那些旧映像,因此,如果从提交中恢复更改,您可能希望保留一些旧映像以加快构建速度。