当前位置: 首页 > news >正文

中企动力网站推广做网站的图片取材

中企动力网站推广,做网站的图片取材,漳州专业网站建设价格,网站备案号是什么意思本人最近在使用docker部署mysql时#xff0c;在持久化mysql数据时遇到了一个有趣的问题#xff0c;将排查过程及思考记录在这里#xff0c;以备后查。先简单描述下我遇到的问题#xff1a;在mysql容器中创建了两个数据库#xff0c;然后使用docker commit想要保存容器的修…本人最近在使用docker部署mysql时在持久化mysql数据时遇到了一个有趣的问题将排查过程及思考记录在这里以备后查。先简单描述下我遇到的问题在mysql容器中创建了两个数据库然后使用docker commit想要保存容器的修改为新的镜像发现只保存下来了新建的一个数据库而另一个并没有被保存下来。最终通过查看docker文档和自己的实验发现是mysql镜像中指定了volume为mysql数据路径所致。具体讲一下我遇到的问题及排查过程首先我从dockerHub里拉取了最新的mysql镜像来部署docker pull mysql然后基于这个镜像创建一个容器docker run --name mysqldock -e MYSQL_ROOT_PASSWORDadmin -e MYSQL_DATABASEinst1 -d -p 3066:3066 mysql这里的MYSQL_ROOT_PASSWORD指定了root账号的密码MYSQL_DATABASE指定了在容器创建时同时创建的数据库命。MYSQL_DATABASE可以不提供这样不会预创建数据库。创建好名为mysqldock的容器后使用docker exec -it mysqldock bash进入容器执行mysql客户端命令查看mysql的库发现inst1已经建好inst1在容器初始化的时候已经创建然后手动创建数据库inst2并且在两个库中创建一些表手动创建inst2及两个库中的表这时我想把目前为止对mysqldock容器做的变更保存下来所以就想到了使用docker commit指令docker commit mysqldockdocker commit 命令会将docker容器的变更保存下来并且生成新的镜像。生成新的镜像后我想看看之前创建的库和表还在不在就使用新的镜像创建了新的容器mysqlnew并且进入容器查看mysql情况神奇的现象出现了mysql中竟然只有inst1库而没有inst2同时inst1里面是空的我们创建的表也消失了消失了的inst2和表这就让我疑惑了查看了下docker commit命令的说明docker commit 说明没毛病啊基于容器的变化创建一个新的镜像。为了验证docker commit 命令的可用性我在mysqldock中创建一个新的文件再commit成新镜像再创建容器查看发现新的容器的确是包含了新创建的文件也就是说docker commit的确能够基于容器的变化创建新的镜像新建文件出现在了新的镜像中那我就丈二和尚摸不着头脑了为啥新建的文件可以保存下来新建的库就不行呢新建的库不也是在mysql数据文件路径下新建的文件么是时候求助官方文档了查阅了docker commit的官方文档说明后发现了在扩展说明中有这么一句话The commit operation will not include any data contained in volumes mounted inside the container.意思是commit操作并不会包含容器内挂载数据卷中的数据变化。难道是因为mysql容器的挂载数据卷引起的(这里我就要吐槽一下了docker --help好歹详细点啊这么重要的信息竟然都没有显示。)通过docker inspect mysqlsock查看mysqldock的属性发现Mounts里有这样的信息Mounts这说明了这个容器将容器内的/var/lib/mysql路径作为volume挂载。查看容器内的该路径发现的确是mysql数据库的数据文件这点在mysql的dockerHub主页也能发现/var/lib/mysql下的数据我马上试了一下在该文件下新建一个文件并且docker commit然后用新的镜像创建新容器文件果然不见了那么问题来了学习挖掘机到底哪家强?为何commit之后inst2没有了但inst1还在深究起来连mysql root密码也没有变还是之前设置的admin。发现没有数据库inst1及root密码都是我在创建mysqldock容器时通过-e参数指定的莫非是在容器创建时通过-e创建的就算是在volume里的也可以保存么继续研究docker commit命令的官方文档在扩展说明里发现了这么一句It can be useful to commit a container’s file changes or settings into a new image.看到了么file changes or settings。文件变更和设置-e的不就是设置么这点也可以通过docker inspect发现在Config下的Env参数中mysqldock和mysqlnew有一样的env参数这么说就说得通了虽然文件的确是发生了变化但是由于文件是在容器挂载的数据卷中所以这些变化没有被commit然而由于在创建mysqldock容器的时候设置了-e参数这些设置被容器保留了下来commit命令使用这些设置构建了新的镜像。排查到这里我们的问题是找到原因了可怎么解决呢我们该如何将mysql docker中修改的数据保存下来呢通过查看mysql dockerHub主页Where to Store Data一节中的说明我们可以通过docker提供的数据挂载来实现。docker的数据挂载分为三种volume, bind mount和tmpfs关于三种的具体说明强烈推荐大家看一下官网的文档。这边简单说明一下volume是由docker默认及推荐的挂载方式volume由docker直接管理同一个volume可以共享给多个容器使用volume和容器的生命周期完全独立容器删除时volume仍然存在除非使用docker volume相应命令删除volume缺点是volume在宿主机上比较难定位在宿主机上直接操作volume比较困难。bind mount是直接将宿主机文件系统上的文件路径映射到容器中两边双向同步显而易见有缺点也有优点优点是可以直接访问也可以被别的程序使用比如我们打包一个本地应用到本地/target路径我们就可以把这个路径使用bind mount的方式挂在到依赖他的应用的docker容器中这样本地应用打包后docker里的数据卷也会同时更新缺点也是显而易见的因为你可以把任何文件路径使用bind mount的方式绑定到容器中这样有可能一些安全问题比如把宿主机的系统文件绑定到容器中。tmpfs这种方式是使用宿主机的内存作为存储不会写到宿主机的文件系统中和前两种区别较大。mysql dockerHub主页中的推荐方式是在宿主机中新建一个专门用来存放mysql docker数据的文件路径同时在新建容器的时候将该路径映射到容器中也就是使用bind mount的方式之所以不使用volume的方式是因为volume是由docker管理在宿主机上比较难定位。那对于我的情况既已经有一个容器使用了volume想把volume里的数据在新的容器中使用bind mount方式挂载该怎么办呢我们可以先把mysqldock容器中所需要的文件拷贝出来到本地的/var/own/mysqldata通过docker cp mysqldock:/var/lib/mysql /var/own/mysqldata然后在创建新的mysql容器时挂载该文件即可docker run -v /var/own/mysqldata:/var/lib/mysql --name mysqlnew -d mysql这样新的容器就可以保留mysqldock中的数据了问题解决当然我们也可以使用docker推荐的volume方式挂载首先找到mysqldock的volume然后在运行新容器时指定该volume进行挂载就行了使用volume进行挂载这种方式繁琐别急还有更简单的在创建容器的时候可以指定使用其他容器的volume也就是共享其他容器的volume使用--volumes-from参数docker run --name mysqlvolumn2 --volumes-from mysqldock -d mysql其实volume还可以在创建的时候进行命名从而是查找起来不那么繁琐具体的参数就请大家参考官网或者--help了其实官方更加推荐的是使用--mount代替-v参数官网上有详尽的例子大家也可以自行进行尝试。当然啦纯粹把docker作成数据容器其实并没有太大意义这里只是借这个问题窥探一下docker数据卷的一些用法。
http://www.zqtcl.cn/news/969768/

相关文章:

  • 医院网站优化策划网站开发的项目需求
  • 网站优化公司服务直播软件怎么开发
  • 网站建设 有道翻译织梦修改网站后备份
  • 苏州网联盛网站建设做最好的在线看片网站
  • 一个空间怎么放2个网站陕西城乡住房建设部网站
  • 如何购买虚拟主机做网站企业查名
  • 动易网站默认密码网站怎么做 吸引人
  • 站长工具国产2023二级建造师证书查询官方网站
  • 微信小程序联盟网站北京网站建设华大
  • 人事怎么做招聘网站比对分析crm管理系统 一般包含
  • 林业网站建设有哪些北京微信小程序开发
  • ppt素材网站建设流程图网站开发原型工具
  • 乡镇医院网站建设成都市企业网站建设
  • 网站编辑如何做原创网站中英切换实例
  • 哈尔滨道外区建设局官方网站wordpress简称
  • 教师网站建设企业实践总结华为应用商店下载安装
  • 常见的网站空间服务商资阳建设局网站
  • 惠通网站建设湖南seo优化服务
  • 网站建设价格标准wordpress花钱吗
  • 龙门惠州网站建设苏州公司注册查询
  • 城阳网站设计自建网站与平台建站
  • 网站建设文字教程wordpress xml生成
  • wordpress修改注册表广西seo网站
  • 新兴网站建设招商网站建设多少钱
  • 商城网站页面模板网页设计的首页如何设计官网
  • 我的世界做外国壁纸网站嘉兴推广公司
  • 网站制作在哪里找怎样上传wordpress模板
  • 网站设计时尚博业建站网
  • 网站建设前期如何规划免费的源代码分享有哪些网站
  • 长春网络培训seo