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 数据卷,数据卷容器详细介绍
Docker 数据卷,数据卷容器详细介绍 引子 有些时候,我们的服务运行时必不可少的会产生一些日志,或是我们需要把容器内的数据进行备份,甚至多个容器之间进行数据共享,这必然涉及容器的数据管理操作. 容器中管理数据主要有两种方式: 数据卷 数据卷容器 数据卷是一个可供容器使用的特殊目录,它绕过文件系统,可以提供很多有用的特性: - 数据卷可以在容器之间共享和重用 - 对数据卷的修改会立马生效 - 对数据卷的更新,不会影响镜像 - 卷会一直存在,直到没有容器使用 #(类似linux下的挂载(moun
-
Docker中数据卷(volume)管理的两种方式
上篇文章给大家介绍过 docker基础知识之挂载本地目录的方法 ,今天给大家介绍Docker中数据卷(volume)管理的两种方式,具体内容如下所示: 什么是数据卷 数据卷( volume ):volume是存在于一个或多个容器中的特定文件或文件夹,这个目录以独立于联合文件系统的形式在宿主机中存在,并为数据的共享与持久化提供便利. 为什么要用数据卷 Docker分层文件系统存在的问题: Docker的镜像是由一系列的只读层组合而来的,当启动一个容器时, Docker加载镜像的所有只读层,并在最上
-
浅谈Docker 容器数据卷挂载小结
为了更直观了解数据卷挂载的操作,做个实验一一验证数据卷挂载的各种情况. 情况一.本地不存在文件挂载到容器存在文件 首先是当本地不存在该文件,而容器内存在该文件的情况,尝试把不存在的文件挂载到存在该文件的容器中.以一个 Alpine 镜像为例,这里把一个修改后的 Alpine 镜像打了新标签,叫做 volume_test: # 本地目录不存在 test 文件. $ docker run --name=test -v ~/test.txt:/etc/hosts -d volume_test 0cba
-
docker容器数据卷之具名挂载和匿名挂载问题
目录 什么是容器数据卷 为什么需要容器数据卷 使用 如何查看是否使用了数据卷 具名挂载和匿名挂载 指定路径挂载 具名挂载 匿名挂载 容器与容器之间的数据共享 --volumes-from 什么是容器数据卷 容器数据卷就是目录的挂载,将我们的容器的目录挂载到宿主机上,从而实现打通宿主机和容器之间的文件共享功能: 为什么需要容器数据卷 docker理念就是将应用和环境打包成一个镜像:但是数据怎么办呢?且不说数据库,一个项目在运行过程种肯定会产生大量的日志,这些日志对开发人员来说是非常重要的, 因为有
-
Docker数据卷常用操作代码实例
如果开发者使用了Dockerfile去构建镜像,也可以在构建镜像时声明数据卷,例如下面这样: FROM nginx ADD https://www.baidu.com/img/bd_logo1.png /usr/share/nginx/html/ RUN echo "hello docker volume!">/usr/share/nginx/html/index.html VOLUME /usr/share/nginx/html/ 这样就配置了一个匿名数据卷,运行过程中,将数据
-
Docker 数据卷及数据容器详细介绍及示例
Docker 数据卷及数据容器 这两天开始学习docker,发现docker确实很强大,让网站部署和维护的效率大大提高.遂准备将手头维护的几个小站,全部docker化.整理的过程中感觉到,docker可以以功能或者进程为单位进行部署和维护,不用再花时间在繁琐的配置上面,但是docker和宿主之间的数据共享以及docker间的数据共享仍然是让人头疼和操心的地方. 几个基本概念: docker: 一种容器管理技术,这里也指既有的开发工具链. container: 容器 image: 镜像 volum
-
docker中容器数据卷volume介绍
目录 docker 容器数据卷volume 使用数据卷 方式一:直接使用命令挂载 -v 方式二:Dockerfile 数据卷容器 总结 docker 容器数据卷volume 如果数据都在容器中,那么我们删除容器的时候数据就会丢失,所以我们希望数据可以持久化. 例如MySQL容器,我们希望数据可以存储在本地,当MySQL容器删除的时候,数据不会丢失. 容器之间可以有一个数据共享的技术,Docker容器中产生的数据,同步到本地,这就是卷技术.也就是数据挂载技术,将我们容器内的目录,挂载到Linux上
-
详解Docker容器数据卷
是什么 先来看看Docker的理念: 将运用与运行的环境打包形成容器运行,运行可以伴随着容器,但是我们对数据的要求希望是持久化的容器之间希望有可能共享数据 Docker容器产生的数据,如果不通过docker commit生成新的镜像,使得数据做为镜像的一部分保存下来, 那么当容器删除后,数据自然也就没有了. 为了能保存数据在docker中我们使用卷. 一句话:有点类似我们Redis里面的RDB和AOF 能干嘛 卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系
-
Docker挂载资料卷保存MySQL数据
简介 docker是运行在虚拟环境中的,这样会有一个问题,那就是储存在docker内的数据会随着docker的重启.宕机而丢失,从而造成不可估量的损失. 所以docker提供了-v指令,可以将容器内的目录以及文件映射到外部文件系统,容器启动时会读取外部文件系统,从而保证数据的完整性. mysql作为最流行的数据库之一,使用范围十分广泛,如果部署在docker却无法持久化怎么办呢?今天就来说一下mysql资料卷. MySql资料卷 mysql需要保存的只有两种文件:数据和配置文件.mysql的默认
-
Docker挂载资料卷部署Nginx
简介 上一篇总结了下docker内mysql的资料卷设置方式,走b/s方向怎么能忘记nginx呢?今天来补上这一篇. Nginx资料卷 nginx的作用有很多,比如正向代理.反向代理.负载均衡.透明代理等,一般情况下使用较多的是反向代理和负载均衡.这些操作只需要修改配置文件就可以完成,所以我们只需要将配置文件同步在本地即可.nginx配置文件的路径是 etc/nginx/nginx.conf ,首先创建对应目录和文件: nginx1目录下的nginx.conf也要创建,内容空着就行.接下来查看镜
-
docker挂载本地目录和数据卷容器操作
1.docker挂载本地目录 docker可以支持把一个宿主机上的目录挂载到镜像里. 交互模式运行 docker run -it -v /home/dock/Downloads:/usr/Downloads ubuntu64 /bin/bash 后台运行 docker run -d -v /home/dock/Downloads:/usr/Downloads --name ubuntu1 ubuntu64 通过-v参数,冒号前为宿主机目录,必须为绝对路径,冒号后为镜像内挂载的路径. 现在镜像内就
-
docker 挂载MySQL实现数据持久化的实现
目录 环境配置 MySQL数据持久化 注意事项 环境配置 本地操作系统:Win10虚拟机的操作系统:CentOS Stream 8已安装docker,可以参考详细安装教程 MySQL数据持久化 在上一节中我们已实现docker启动多个MySQL服务,当误删docker之后,docker里面运行的数据将无法保存.为了能保存docker里面运行的数据,需要使用docker挂载功能,将docker里面的数据保存在系统的本地目录,即使删掉docker仍能保存之前的数据.挂载MySQL实现数据持久化可以执
-
docker实现MySQL数据同步的方法
大家好,今天分享一下docker的一个实战 我们使用docker 实现MySQL 的数据同步 搜索mysql 镜像 [root@localhost ~]# docker search mysql NAME DESCRIPTION STARS OFFICIAL AUTOMATED mysql MySQL is a widely used, open-source relation- 12222 [OK] mariadb MariaDB Server is a high performing ope
-
Docker容器中Mysql数据的导入/导出详解
前言 Mysql数据的导入导出我们都知道一个mysqldump命令就能够解决,但如果是运行在docker环境下的mysql呢? 解决办法其实还是用mysqldump命令,但是我们需要进入docker的mysql容器内去执行它,并且通过配置volumes让导出的数据文件可以拷贝到宿主机的磁盘上 所以操作步骤就可以分为: 配置docker的volumes 进入docker的mysql容器,导出数据文件 至于数据导入,太过简单,就不说了 先来看看mysqldump命令常见选项: --all-datab
-
Docker向数据卷Volume写入数据
一.前言 我们知道,镜像是只读的,容器是在镜像的基础上加了一层读写层,这样容器就可以写了.既然容器可以进行写入了,那么我们就可以把一些数据放进容器里面.但是这样会有一种问题:如果容器被删除了,那么容器里面的数据也将会被删除.这该怎么解决呢?这时我们就可以使用Volume来解决这种问题. 二.volume 1.什么是volume 我们先来考虑这样一个问题:如何把源代码放进容器里面 可以在制作镜像时直接把源代码嵌入里面.(不考虑这种方式) 把源代码挂载到容器的可读写层. 那么什么是Volume呢?
-
docker安装redis挂载容器卷同时开启持久化
目录 一.安装 1.搜索redis容器镜像并拉取容器镜像 2.在宿主机本地创建redis存储配置文件和数据的目录,我这里创建/docker/redis下 3.配置文件 4.启动容器 二.进入容器,指定配置文件启动redis服务 1.启动redis服务 2.指定6380端口登陆客户端 三.删除容器后重新启动容器 1.删除,然后查看宿主机目录下是否有持久化文件,查看这一步可以放在上一步后 2.重启容器 说明:centOS操作系统,操作系统已安装过redis,端口6379已被占用.容器将会使用6380
-
docker 使用mysqldump命令备份导出项目中的mysql数据
mysqldump命令 介绍:一个数据库备份程序 格式:mysqldump [options] [db_name [tbl_name ...]]描述:mysqldump客户端实用程序执行逻辑备份,生成一组SQL语句,可以执行这些语句来重现原始数据库对象定义和表数据.它转储一个或多个MySQL数据库以备份或传输到另一个SQL服务器. mysqldump命令还可以生成CSV,其他分隔文本或XML格式的输出. 下图为镜像重命名后的镜像名为uoj,现在要把这个镜像中的mysql导出 运行如下命令: do
-
Linux下实现MySQL数据备份和恢复的命令使用全攻略
为了保障数据的安全,需要定期对数据进行备份.备份的方式有很多种,效果也不一样.一旦数据库中的数据出现了错误,就需要使用备份好的数据进行还原恢复.从而将损失降到最低.下面我们来了解一下MySQL常见的有三种备份恢复方式: 1.利用Mysqldump+二进制日志实现备份 2.利用LVM快照+二进制日志实现备份 3.使用Xtrabackup备份 一:实验环境介绍: 系统介绍:CentOS6.4_X64 数据库版本:mysql-5.5.33 二:基于Mysqldump命令实现备份恢复 2.1.思路概念
随机推荐
- jQuery实现获取table中鼠标click点击位置行号与列号的方法
- javascript alert乱码的解决方法
- Response.Flush的使用心得
- centos7 mysql数据库安装和配置
- IOS 开发自定义条形ProgressView的实例
- php面向对象全攻略 (七) 继承性
- 详解shell 遍历文件夹内所有文件并打印绝对路径
- jquery操作复选框checkbox的方法汇总
- 未公开的SQL Server口令的加密函数
- jQuery对象和DOM对象之间相互转换的方法介绍
- jQuery的attr与prop使用介绍
- C#特性 匿名类型与隐式类型局部变量使用介绍
- 如何使用php等比例缩放图片
- Android实现短信验证码获取自动填写功能(详细版)
- Java中的引用和动态代理的实现详解
- VBS基础篇 - vbscript Dictionary对象
- socket在egg中的使用实例代码详解
- centos7修改网关和配置ip的方法示例
- 利用rest framework搭建Django API过程解析
- Python+OpenCV实现车牌字符分割和识别