MySQL 进行 Docker 容器化之体验与感悟
创始人
2025-03-17 15:21:14
0次

 原则

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

[[275459]]

MySQL 容器化方式

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

容器内各路径

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

  • 配置文件
  • 镜像内 MySQL 的配置文件路径为/etc/mysql ,路径下包含my.cnf 配置和一个conf.d 文件夹,my.cnf 文件内是一些base setting ,我们自定义的配置应该写在conf.d 文件夹下的配置文件里,从而覆盖base setting 。conf.d 文件夹下默认有两个配置文件:docker.cnf 和mysql.cnf ,在后文所讲的挂载配置路径到宿主机之后,应将这两个用户自定义配置文件拷贝到宿主机配置路径下。
  • 持久化数据
  • 镜像内 MySQL 的持久化数据均存储在/var/lib/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 

参数解释

  • --name 容器名称
  • -e 为新容器设置环境变量,容器内 MySQL 会以此初始化 root 用户密码
  • -v 两个-v 参数分别将容器内 MySQL 的自定义配置文件目录和持久化数据目录挂载到宿主机,冒号前为宿主机目录,后为容器内目录
  • -d 后台启动容器

小技巧

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

  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 用户的密码之前已经被设定过了。

相关内容

热门资讯

PHP新手之PHP入门 PHP是一种易于学习和使用的服务器端脚本语言。只需要很少的编程知识你就能使用PHP建立一个真正交互的...
网络中立的未来 网络中立性是什... 《牛津词典》中对“网络中立”的解释是“电信运营商应秉持的一种原则,即不考虑来源地提供所有内容和应用的...
各种千兆交换机的数据接口类型详... 千兆交换机有很多值得学习的地方,这里我们主要介绍各种千兆交换机的数据接口类型,作为局域网的主要连接设...
粉嫩如何诠释霸道 东芝M805... “霸道粉”是个什么玩意东芝M805拿过来的时候,笔者扑哧笑了,不是笑这款笔记本,而是笑这款产品的颜色...
如何利用交换机和端口设置来管理... 在网络管理中,总是有些人让管理员头疼。下面我们就将介绍一下一个网管员利用交换机以及端口设置等来进行D...
什么是大数据安全 什么是大数据... 在《为什么需要大数据安全分析》一文中,我们已经阐述了一个重要观点,即:安全要素信息呈现出大数据的特征...
只需三步,让你掌握阿尔法路由器... 请参照以下阿尔法路由器设置方法,通过浏览器进入及设置宽带路由器。经过这三个步骤的设置,基本上能够熟悉...
如何更省钱? 近期特价热门硒鼓... 如今激光打印设备已经成为商务或企业的绝对主力办公设备,但采购者往往忽视了激光打印设备所用的耗材,相对...
全面诠释网络负载均衡 负载均衡的出现大大缓解了服务器的压力,更是有效的利用了资源,提高了效率。那么我们现在来说一下网络负载...
如何允许远程连接到MySQL数... [[277004]]【51CTO.com快译】默认情况下,MySQL服务器仅侦听来自localhos...