重复使用以前使用过的docker容器

重复使用以前使用过的docker容器,docker,containers,Docker,Containers,如果我在docker容器中,则可以通过使用Ctrl+p+Q或使用exit命令停止该容器,但在退出该容器后,如何保存其状态,以便在所有更改仍然存在的情况下使用同一容器。另外,如果我使用docker commit保存容器,那么它将挂起。那么,是否有任何方法可以使用与我退出时处于相同状态的容器?您可以将源代码管理操作放入Dockerfile中列出的最后一次运行中 但是,为了使这是一个唯一的命令,从而确保每次都运行它,您可以将Docker build包装在另一个脚本中,该脚本为克隆操作生成一个唯一编号的

如果我在docker容器中,则可以通过使用Ctrl+p+Q或使用exit命令停止该容器,但在退出该容器后,如何保存其状态,以便在所有更改仍然存在的情况下使用同一容器。另外,如果我使用docker commit保存容器,那么它将挂起。那么,是否有任何方法可以使用与我退出时处于相同状态的容器?

您可以将源代码管理操作放入Dockerfile中列出的最后一次运行中

但是,为了使这是一个唯一的命令,从而确保每次都运行它,您可以将Docker build包装在另一个脚本中,该脚本为克隆操作生成一个唯一编号的迷你脚本

这一步将把对该脚本的调用插入到构建时之前动态生成的Dockerfile中,这样对于每次必须运行的操作(克隆),其run语句确实是唯一的,即

RUN /bin/sh /foo-1234567abc.sh
其中,
foo-1234567abc
是为每个构建唯一生成的(后续执行会创建类似于
foo-26190def.sh
)并包含克隆操作,即

cd /some/dir && /usr/bin/git clone http://some.git.server/your-repo.git
这一点本身可能很少改变,或者永远不会改变

这保证了Docker将在每次构建期间运行克隆,同时具有完全自动化和确保缓存一直使用到最后一次唯一运行的优点


有关更多信息,请参见使用docker cache@Piyusj。您能给出一些示例或解释吗?可以通过使用Ctrl+p Ctrl+Q序列退出容器,然后使用docker exec命令来完成吗?对容器所做的所有更改是否仍然存在?缓存将保留,即使您使用
Ctrl+P Ctrl+Q
,但要启用缓存,您需要使用上面发布的命令,