13518219792

建站动态

根据您的个性需求进行定制 先人一步 抢占小程序红利时代

MySQL进行Docker容器化之体验与感悟

 原则

成都创新互联拥有一支富有激情的企业网站制作团队,在互联网网站建设行业深耕十载,专业且经验丰富。十载网站优化营销经验,我们已为上千多家中小企业提供了做网站、网站建设解决方案,按需搭建网站,设计满意,售后服务无忧。所有客户皆提供一年免费网站维护!

Docker 的使用原则是所有容器化的应用程序都应该是无状态的 ,即容器内部只跑业务逻辑,容器应用的所有配置文件、日志文件和持久化数据 都应该挂载到宿主机文件系统,不应该存储在容器内部,以免容器被误删或自身出现问题导致数据丢失。

MySQL 容器化方式

MySQL 属于有状态应用,若将其容器化需将其状态抽离到宿主机,其配置文件、日志文件和持久化数据都应该挂载到宿主机。

容器内各路径

通过docker pull 命令拉取下来的官方 MySQL 镜像内,有几个重要路径:

命令

 
 
 
  1. $ docker run \ 
  2.  --name db \ 
  3.  -e MYSQL_ROOT_PASSWORD=secret \ 
  4.  -v /path/to/confdir:/etc/mysql/conf.d \ 
  5.  -v /path/to/datadir:/var/lib/mysql \ 
  6.  -d 
  7.  mysql:tag 

参数解释

小技巧

我们可以在宿主机专门建立一个目录用来存放容器状态数据,层级结构为:

 
 
 
  1. docker-container-data 
  2.  | 
  3.  - container1 
  4.  | | 
  5.  | - conf 
  6.  | | 
  7.  | - logs (其下又可以细分路径) 
  8.  | | 
  9.  | - data 
  10.  | 
  11.  - container2 
  12.  | 
  13.  - container3 
  14.  | 
  15.  ... 

灾难措施

将状态数据挂载宿主机的好处就是如果容器发生问题,可以启动一个新容器并将容器状态路径挂载到宿主机上的原状态路径,从而恢复生产。

可以直接将新启动的 MySQL 容器的配置和持久化数据挂载到之前容器的宿主路径,新容器便可以无缝恢复数据(配置、用户、库、表、记录均恢复)。

注意事项

不可以将两个均在运行的容器的状态路径挂载到同一个宿主路径 ,两个容器同时在一个宿主路径下写状态,容器应用读取状态时会无法识别,导致崩溃。

若新启动的容器要挂载之前容器的宿主数据路径,则会忽略-e MYSQL_ROOT_PASSWORD=foo 命令参数所设定的 root 用户密码环境变量,因为挂载的数据路径下已经包含了 MySQL 用户信息表,而 root 用户的密码之前已经被设定过了。


文章题目:MySQL进行Docker容器化之体验与感悟
转载来于:http://cdbrznjsb.com/article/djopsge.html

其他资讯

让你的专属顾问为你服务