Docker挂载资料卷保存MySQL数据

 更新时间:2022年01月20日 10:50:03   作者:老马-Max  
这篇文章介绍了Docker挂载资料卷保存MySQL数据的方法,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧

简介

docker是运行在虚拟环境中的,这样会有一个问题,那就是储存在docker内的数据会随着docker的重启、宕机而丢失,从而造成不可估量的损失。

所以docker提供了-v指令,可以将容器内的目录以及文件映射到外部文件系统,容器启动时会读取外部文件系统,从而保证数据的完整性。

mysql作为最流行的数据库之一,使用范围十分广泛,如果部署在docker却无法持久化怎么办呢?今天就来说一下mysql资料卷。

MySql资料卷

mysql需要保存的只有两种文件:数据和配置文件。mysql的默认配置文件是 /etc/mysql/my.cnf (winDocker下是 /etc/my.cnf),如果是docker下的mysql,建议在 /etc/mysql/conf.d 目录中创建 .cnf 文件。新建的文件只要保证后缀名是 cnf 即可覆盖配置项。至于mysql数据存放的目录,可以在mysql配置文件中找到:

文件写的很清楚,数据保存在 /var/lib/mysql 路径。接下来需要创建存放资料卷的路径,我创建的目录是 /docker/mysql/data 和 /docker/mysql/conf.d,前者是数据目录,后者是配置目录。接下来需要在本机指定位置新建目录(我已经创建好了):

现在编写命令:

docker run -itd -p 3306:3306 -e MYSQL_ROOT_PASSWORD=123456 -v /docker/mysql/data/:/var/lib/mysql/ -v /docker/mysql/conf.d:/etc/mysql/conf.d --name mysql01 mysql

这命令有些长,解释一下:

  • -itd:开启交互模式,模拟终端,后台运行
  • -p 3306:3306:对应端口映射到宿主机
  • -e MYSQL_ROOT_PASSWORD=123456:设置root账户密码为123456
  • -v /docker/mysql/data/:/var/lib/mysql/:将宿主机的 /docker/mysql/data/ 目录与mysql的 /var/lib/mysql/ 同步
  • -v /docker/mysql/conf.d:/etc/mysql/conf.d:将宿主机的 /docker/mysql/conf.d 目录与mysql的 /etc/mysql/conf.d 同步
  • --name mysql01:自定义容器名称

mysql:运行的镜像名称

这一命令执行过后,你会看到新容器mysql01已经正常启动了:

正常情况下,你设置的目录下会多出一些文件:

接下来测试一下。通过客户端连接到docker下的mysql(如果不知道如何使用客户端连接docker下的mysql,请翻我之前的博文),新建数据库:

然后重启docker:

重启成功以后,进入容器查看数据库:

数据库并没有因为docker重启而被初始化,证明资料卷已经生效。以后再也不怕Docker宕机而数据丢失了。

后言

我分别在winDocker和linuxDocker下设置了mysql资料卷,但只有linux可以跑得起来。winDocker的资料卷可以设置成功,但是重启docker后会出现无法启动mysql容器的错误。根据mysql官方声明得知,docker内的mysql官方镜像是oracle公司专门为linux平台构建的,推测winDocker无法正确挂载资料卷应该和官方支持有点原因,建议同学们直接上手linux。

到此这篇关于Docker挂载资料卷保存MySQL数据的文章就介绍到这了。希望对大家的学习有所帮助,也希望大家多多支持脚本之家。

相关文章

  • Docker部署portainer的详细步骤

    Docker部署portainer的详细步骤

    Portainer是一个轻量级的docker环境管理UI,可以用来管理docker宿主机和docker swarm集群,今天通过本文给大家介绍Docker部署portainer的步骤,感兴趣的朋友一起看看吧
    2022-01-01
  • jenkins+docker+nginx+nodejs持续集成部署vue前端项目

    jenkins+docker+nginx+nodejs持续集成部署vue前端项目

    本文主要介绍了jenkins+docker+nginx+nodejs持续集成部署vue前端项目,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2022-05-05
  • 在windows下的安装Docker的教程

    在windows下的安装Docker的教程

    这篇文章主要介绍了在windows下的安装Docker的教程,注意只能是64的系统,需要的朋友可以参考下
    2015-12-12
  • Docker安装Nginx容器配置及重新生成镜像图文教程

    Docker安装Nginx容器配置及重新生成镜像图文教程

    Docker是一个用于开发,交付和运行应用程序的开放平台,Docker使您能够将应用程序与基础架构分开,从而可以快速交付软件,下面这篇文章主要给大家介绍了关于Docker安装Nginx容器配置及重新生成镜像的相关资料,需要的朋友可以参考下
    2023-05-05
  • Docker Compose的安装和使用步骤

    Docker Compose的安装和使用步骤

    Docker Compose是一个工具,用于定义和运行多容器应用程序的工具,接下来通过本文给大家分享Docker Compose的安装和使用教程一起看看吧
    2021-09-09
  • 部署维护docker环境的详细教程

    部署维护docker环境的详细教程

    这篇文章主要介绍了部署维护docker环境的详细教程,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2017-02-02
  • Docker 使用nsenter工具进入容器的操作

    Docker 使用nsenter工具进入容器的操作

    这篇文章主要介绍了Docker 使用nsenter工具进入容器的操作,具有很好的参考价值,希望对大家有所帮助。一起跟随小编过来看看吧
    2020-11-11
  • Docker 教程之基本概念(镜像,容器,仓库)详解

    Docker 教程之基本概念(镜像,容器,仓库)详解

    这篇文章主要介绍了Docker 教程之基本概念(镜像,容器,仓库)详解的相关资料,这里对Docker 的基本知识做一个介绍,需要的朋友可以参考下
    2016-12-12
  • docker 安装ElasticSearch 6.x的教程详解

    docker 安装ElasticSearch 6.x的教程详解

    这篇文章主要介绍了docker 安装ElasticSearch 6.x的教程,非常不错,具有一定的参考借鉴价值 ,需要的朋友可以参考下
    2019-04-04
  • docker磁盘空间不足的解决办法

    docker磁盘空间不足的解决办法

    linux的磁盘空间挂载后,需要迁移一下docker 镜像原本的位置,因此有此实践,分享操作过程,文章通过代码示例给大家介绍的非常详细,需要的朋友可以参考下
    2023-11-11

最新评论