TL; DR
dksnap允许您创建和管理Docker容器的快照。 我们希望这对于在本地使用数据库容器的开发人员特别有用。 在GitHub上检查dksnap!
![](https://i-blog.csdnimg.cn/blog_migrate/6dbe0f5463d1ca22d1acdcc2cc474558.png)
本地开发和测试数据
在Kelda上工作的最好的事情之一就是,我们每天与大量从事微服务构建的杂草开发人员进行交流。 我们听说了容器化开发的所有好处以及一些挑战。 这样的挑战之一是在本地开发和测试期间管理测试数据。
首先,有一些背景信息:我们正在合作的大多数开发人员都在本地使用Docker来处理一个或多个依赖某种数据库的容器。 当然,在生产中,他们使用由操作团队管理的生产数据库。 但是,在本地工作时,访问生产数据库通常是不可行的。 相反,开发人员倾向于从Docker Hub获取Postgres,MySQL或Mongo容器。
当数据库需要填充数据时,麻烦就开始了,这通常需要烦人的手动设置工作,而这可能需要很长时间才能完成。 完成所有工作以正确设置数据库容器之后,您要做的最后一件事是必须再次进行操作 。 但是,最终,测试开始运行,数据变得陈旧,容器重新启动,生活发生了,您最终回到了开始的地方–面前有许多手动设置工作。
dksnap
dksnap是一个工具,可让您实时创建,查看和回滚容器的快照,而无需摆弄bash脚本或存储复杂的docker命令。
一旦按照自己喜欢的方式设置了容器,就可以创建快照。 完成此操作后,您知道自己可以在几秒钟内立即恢复到以前的工作状态,就可以按自己的意愿操作数据。
除了核心快照功能之外,dksnap还允许您使用已创建的任何快照来替换正在运行的容器,并提供所有快照的树形视图以及用于显示它们随时间变化的差异的diff。
![](https://i-blog.csdnimg.cn/blog_migrate/ca8a03edea7e979a10535481681a0b2b.png)
dksnap具有三个关键功能,这些功能很难用标准Docker CLI复制。
- 首先,它具有音量意识。 大多数数据库容器使用docker commit无法捕获的卷。
- 其次,它是数据库感知的。 dksnap知道如何与Mongo,Postgres和MySQL进行通信,从而使其礼貌地转储和还原数据,并使其能够显示不同快照版本之间的差异。
- 最后但并非最不重要的一点是,它具有简单直观的用户界面,隐藏了Docker快照所需的复杂性。
尝试dksnap
dksnap入门很简单。 此工具是单行二进制文件,可以通过在终端中运行以下命令来安装该文件:
<code> curl http s: //kelda.io/install-dksnap. sh | sh </code>
或者,如果愿意,可以下载最新版本并将其复制到$ PATH中。
如果已经在本地计算机上运行了容器,则dksnap将打开一个新的终端GUI,该GUI可让您创建,替换和查看容器的快照。
否则,如果您想尝试dksnap,我们将创建一个简单的演示以及分步说明,以便您了解其工作原理。
![](https://i-blog.csdnimg.cn/blog_migrate/7c73e848545f9c954662de3787f2221e.gif)
<code> # Download the demo.
git clone https ://github.com/kelda/dksnap.git
cd dksnap/demo
# Start the example application.
# You can access it in your browser at localhost:8080.
docker-compose up -d
# Use dksnap to create snapshots of the entries in the Mongo database.
dksnap </code>
参与其中
dksnap当前处于alpha状态 。 它可以日常使用,但仍在不断发展。 如果您觉得这有用或有趣,请考虑加入社区并向我们提供您的想法。
您可以通过以下几种方式参与其中:
我们期待您的回音!
先前发布在 https://kelda.io/blog/dksnap-docker-snapshots-for-development-and-test-data/
From: https://hackernoon.com/dksnap-introduction-docker-snapshots-for-development-and-test-data-lu5r36p5