docker实践教程,mysql中使用自定义目录实现数据挂载(二)

有一些知识点在docker实践教程,nginx中使用数据卷映射修改前端网页(一),就不累述了。

下载mysql的镜像

docker pull mysql

在这里插入图片描述

创建容器

先去Docker Hub看看mysql是怎么使用的
在这里插入图片描述
可知,运行命令为:(该方式运行创建出的mysql基本上是默认的数据,有可能不符合我们所需)

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

some-mysql:mysql对应容器名称
my-secret-pw:mysql要设置的密码
tag:版本号

默认方式创建的mysql容器

修改一下密码为123456,其他的都保持默认,可以看见创建了一个名称为some-mysql,端口号为3306的mysql容器。
在这里插入图片描述
使用docker inspect some-mysql命令查看some-mysql的具体信息,可以知道当前some-mysql是以数据卷形式,挂载在宿主机框起来的这个路径下的,Name这一串是数据卷名称。
在这里插入图片描述
mysql等某些比较特殊的,容器会自动创建数据卷来挂载数据,这些自动生成的数据卷叫匿名卷,一般是一长串的代码符号。这个时候,mysql对应的数据就挂载在宿主机框起来的这个路径下
在这里插入图片描述
为什么mysql要自动创建一个数据卷将数据挂载在宿主机呢?
因为mysql运行时数据内容会原来越大,不方便数据迁移等操作,出于数据解耦的考虑,将数据挂载在宿主机是非常合理的。
但是如果我们不自己指定mysql数据卷及其的挂载的目录,这个时候生成的匿名卷名称非常的反人类。如果我们需要进行mysql升级,就需要删除原来的MySQL容器,再创建新的容器。对应的原来mysql容器的数据卷目录及其数据是还在的,但是新版本mysql容器自动生成新的的数据卷,新数据卷是没有数据的,相当于数据丢失了。除非你能找到老的数据卷,将内容迁移到新的卷中

自定义容器数据目录、配置文件、初始化脚本、端口号

在执行docker run命令时,使用-v 宿主机目录:容器目录就可以完成宿主机本地目录的挂载。
注意:宿主机目录必须以/./开头,否则就会被识别为数据卷名,而非本地目录
容器中数据目录、配置文件、初始化脚本的目录可以在Docker Hub中找到。
在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

/root/docker_data/mysql是我宿主机本地建立的文件夹,先删除原来的mysql,建立好我们需要的文件夹
在这里插入图片描述
这个时候先把初始化文件和配置文件放到对应目录中。
注意初始化文件只在mysql容器创建时第一次运行的时候初始化,后面放进去的就不能初始化了。

docker run -d \
  --name mysql \
  -p 3306:3306 \
  -e TZ=Asia/Shanghai \
  -e MYSQL_ROOT_PASSWORD=123456  \
  -v /root/docker_data/mysql/data:/var/lib/mysql \
  -v /root/docker_data/mysql/init:/docker-entrypoint-initdb.d \
  -v /root/docker_data/mysql/conf:/etc/mysql/conf.d \
  mysql

–name:运行创建的容器名称
-p:映射的端口号(宿主机端口号:容器端口号)
-e:环境变量 ,TZ----设置mysql时区,MYSQL_ROOT_PASSWORD设置密码
-v:文件挂载
在这里插入图片描述
这个时候,就可以看见我们的data中有生成的初始mysql文件数据了
在这里插入图片描述
此时如果我们的mysql容器被删除了,运行创建新容器的时候,只要挂载的文件还是我们自定义的这个文件,数据就不会丢失,不需要其他的迁移操作等

  • 24
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值