鉴于在Docker Windows容器中运行的Windows应用程序,并且正在运行的应用程序对Windows注册表进行运行更改时,是否存在一个docker switch /命令,可保留对Windows注册表的更改,因此,当容器重新启动后,更改的值将保留。
作为比较,可以通过暴露安装点(例如)来在容器重启之间持久保存文件更改。
docker volume create externalstore
docker run -v externalstore:\data microsoft/windowsservercore
Windows注册表的等效功能是什么?
答案 0 :(得分:0)
我认为您是在进行动态更改(容器的每个起点和终点都包含您要保存用于下一次运行的不同用户密钥),例如漫游配置文件,而不是一组静态的注册表设置,但是为静态而写,因为它是一个更容易且更可能的答案。
值得注意的是容器和图像之间的区别。
图像是静态模板。
容器是从映像启动的,尽管可以停止并重新启动它们,但对于大多数企业设计(例如Kubernetes),通常在每次执行后将它们完全丢弃。
如果您希望运行像VM这样的docker容器(通常不建议这样做),请停止并启动它,则注册表设置应在两次运行之间保持不变。
可以使用docker commit
命令将容器转换为图像。在这种方法中,您将启动容器,进行所需的更改,然后将容器提交给映像。新容器将从新映像开始。尽管这是可行的,但出于与克隆机器或升级操作系统不同的原因,我们不建议这样做。您将获得图像中真正不需要的其他工件(文件,设置,日志)。如果重复执行此操作,最终将导致复印不良。
进行静态更改的更好方法是使用 dockerfile 构建新映像。您需要继续阅读(超出此答案的范围),但实际上您正在编写一个docker脚本,该脚本将更改现有的docker映像并将其保存到新映像(用{{1}完成) }。这样做的好处是它更干净,更可重复,并且构建过程的每个步骤都是分层的。层对于节省空间是有利的。由Windowsservercore基础和应用程序层制成的映像,然后复制到已经具有Windowsservercore基础副本的另一台计算机上,将仅占用应用程序层的额外空间。
如果您想重复创建容器并对其应用一致的设置,但又没有构建新映像,而没有,则可以做两件事:
TL; DR::您应该使用dockerfile进行新映像以进行静态更改。对于动态更改,您可能需要使用一些巧妙的脚本。