答案 0 :(得分:0)
在Docker For Mac上(我认为在Docker for Windows上),docker在关闭时没有给予容器优雅退出的机会。因此,数据库容器中的MariaDB服务器没有机会进行清理,并且下一次启动时非常重要的数据库会被破坏(它似乎不会损害微小的数据库)。因此,如果您要升级docker,关闭主机或退出docker,那么首先选择ddev stop
或ddev remove
是明智之举。 (请注意,一个简单的ddev remove
不会丢弃你的数据库,当你重新开始它时它会在那里。)
另请注意,在ddev v0.17.0之前的版本中,ddev remove
命令本身存在此问题:它可能会破坏数据库,因为在销毁之前不会有足够的时间来清理数据库容器。
我认为这不会影响Linux用户,也不确定Windows。
TLDR;
ddev remove --remove-data
删除现有已损坏的数据库(在ddev start
之后,重新导入数据库或再次安装)ddev remove
项目的情况下重新启动主机。对此的公开问题是https://github.com/drud/ddev/issues/748,但它必须在docker-for-mac,docker-for-windows中修复。第二种方式:在项目中自定义mysql配置。在调试之前,请删除.ddev / mysql中的任何配置,以防出现问题,然后ddev restart
。
如果您的数据库已损坏,您可以通过将名为.ddev / mysql / recovery.cnf的文件添加到项目ddev start
来恢复:
[mysqld]
innodb_force_recovery = 1
恢复后,删除文件.ddev / mysql / recovery.cnf 您的数据库无法保证完好无损,即使它出现正常。
[编辑2018-05-16]:第三个原因是码头资源不足。如果您正在运行一些项目或使用docker进行其他操作,那么您将要从默认的2GB中提升可用内存。
[编辑2018-06-27]:添加了有关恢复可能性的说明。
[编辑2018-08-02]:提到ddev的v1.0.0改进了很多。
答案 1 :(得分:0)
在切换项目时,我经常需要关闭和打开Docker,并且在退出Docker应用之前,我不太可能浏览到我管理的{+ {1}} 60个站点中的每个站点
是否有一个<body>
<a href="page1.html" id="optionA">Option A</a>
<a href="page2.html" id="optionB">Option B</a>
</body>
或类似的命令适用于退出Docker之前停止所有ddev实例?