官方文档:
所以 mysql应如下启动:
docker run -p 3306:3306 -d -e MYSQL_ROOT_PASSWORD=密码 -v /windows盘符/指定的文件夹路径:/var/lib/mysql mysql:5.7
redis:
docker run -p 6379:6379 -d -v /windows盘符/指定的文件夹路径:/data redis:5.0 redis-server --appendonly yes
多看官方文档,里面有详细的说明
补充知识:docker 挂载进容器的文件修改后没有改变需要重启
今天发现一个很奇怪的现象,就是我在宿主机上的文件挂载进docker后,主机上删除了文件,并且重新上传重命名为相同名字的文件,容器中的没有同步.
先来说下Linux,Linux存储是分为iNode和block的,iNode存储的是文件的属行信息,例如大小,在磁盘的什么位置,block是4k大小的一个块,存储的是文件的实际信息,不足4k大小的文件也会占用掉4k的空间.
了解了上面,再来说docker,挂载进docker的文件,实际上是docker记住了一个iNode,他可以通过这个iNode找到block,也就是实际的文件信息.如果是用 > 追加重定向写入文件,是可以同步到docker的,但是如果是rm 重命名的,文件的iNode就改变了,但是docker中的iNode还是指向了之前的磁盘位置,所以文件没有改变.
rm 原理:rm只是删除了iNode,没有了iNode通过正常方式,找不到磁盘上的block,看起来就是删除了,但是文件信息还在,文件信息会在下次写入到这里的时候覆盖掉,所以数据被删除还有恢复的方法,但是,如果删除的时候文件是打开的,文件也不会被删除
同样的还有vim ,vim 文件的时候,是基于现有的文件copy了一份,同级目录下会有一个 .开头swp结尾的文件,当你保存退出的时候,vim 会删掉源文件,将这个文件重命名为源文件的名字,iNode自然也就改变了.
以上这篇解决docker重启redis,mysql数据丢失的问题就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持小牛知识库。
docker-compose挂载mysql,mysql老是重启并且数据丢失 docker-compose.yml文件 /home/docker/mysql/conf.d文件 启动方式:docker-compose up -d mysql 希望mysql不重启,数据不会丢失
本文向大家介绍解决redis服务启动失败的问题,包括了解决redis服务启动失败的问题的使用技巧和注意事项,需要的朋友参考一下 最近学redis,就遇到了各种坑,在这里分享一下 我是将redis做成后台 安装,配置环境变量统统省略掉了。 做成后台服务呢,首先,cd到redis的安装目录下,再cd到util,接着执行 然后修改服务名称,将原来的redis_6379更名为redisd,这样下次启动比较
本文向大家介绍MySQL数据库innodb启动失败无法重启的解决方法,包括了MySQL数据库innodb启动失败无法重启的解决方法的使用技巧和注意事项,需要的朋友参考一下 问题介绍 电脑在使用过程中死机,重启后发现mysql没有启动成功,查看错误日志发现是innodb出现问题导致mysql启动失败。 错误日志 解决方法 1.如果数据不重要或已经有备份,只需要恢复mysql启动 进入mysql目录,
本文向大家介绍Django数据库连接丢失问题的解决方法,包括了Django数据库连接丢失问题的解决方法的使用技巧和注意事项,需要的朋友参考一下 问题 在Django中使用mysql偶尔会出现数据库连接丢失的情况,错误通常有如下两种 OperationalError: (2006, 'MySQL server has gone away') OperationalError: (2013, 'Los
docker合成文件:
本文向大家介绍jqGrid翻页时数据选中丢失问题的解决办法,包括了jqGrid翻页时数据选中丢失问题的解决办法的使用技巧和注意事项,需要的朋友参考一下 我在项目中使用jqGrid时,采用异步加载服务器数据,例如点击翻页、搜索时都重新加载数据。这样就会产生一个问题。 问题描述: 当对列表批量删除时,可以选择多个记录信息,选择当前页的第一条,如图: 点击下一页再选择一些记录,点击删除时,则无法删除