如果我在docker容器中,可以使用 Ctrl + P + Q 或使用退出命令停止它,但在退出此容器后,如何保存其状态,以便我可以使用相同的容器,仍然存在所有更改。此外,如果我使用 docker commit 来保存容器,那么它就会挂起。那么是否有任何方法可以使用与我退出的相同状态的容器?
答案 0 :(得分:1)
您可以将源控制操作放入Dockerfile中列出的最后一个RUN。
但是为了使它成为一个独特的命令,从而确保它每次运行,你可以将Docker构建包装在另一个脚本中,该脚本为克隆操作生成一个唯一编号的迷你脚本。
此步骤会将该脚本的调用插入到构建时间之前即时生成的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将在每次构建期间运行克隆,同时具有完全自动化的优势,并确保在最后一次独特的RUN之前使用缓存。
有关详细信息,请参阅here