写点什么

Docker | 数据持久化与数据共享

作者:甜点cc
  • 2022-10-23
    河南
  • 本文字数:1082 字

    阅读完需:约 4 分钟

数据持久化(安装 MySQL)

参考另一篇Docker Compose安装mysql

MySQL 的数据持久化问题

  1. 下载容器

docker pull mysql:5.7


  • -d 后台运行

  • -p 端口映射

  • -v 挂载数据卷

  • -e 环境配置

  • --name 容器名字

  1. 运行容器

docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
复制代码


https://hub.docker.com/_/mysql


官网启动 MySQL,设置密码

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


启动成功之后,使用客户端连接

这里我使用的是 SQLyog 工具连接 MySQL 数据库


sqlyog 连接服务器的 3310 端口,3310 端口映射 MySQL 容器的 3306 端口。



可以在 Linux 主机/home目录下查看到mysql文件夹

删除 MySQL 容器,可以看到 Linux 主机上/home/mysql/数据依然存在

  • docker rm -f 容器 ID

  • docker ps -a

  • cd /home/mysql

  • ls



运行新的 MySQL 容器通过挂载数据卷,就可以把 Linux 主机上备份的数据重新导入到容器里,这就是数据持久化。

数据共享

容器之间同步数据。比方说,两个MySQL数据库同步数据


--volumes-from:实现容器间的数据共享


多个 centos 容器数据共享

  1. 父容器 docker01(数据卷容器)


# 父容器docker01(数据卷容器)docker run -it --name docker01 xiao-centos /bin/bash
复制代码


  1. 创建 docker02 容器,继承关联 docker01 容器


docker run -it --name docker02 --volumes-from docker01 xiao-centos /bin/bash
复制代码


  1. 创建 docker03 容器,继承关联 docker01 容器


docker run -it --name docker03 --volumes-from docker01 xiao-centos /bin/bash
复制代码


以上三个容器之间数据同步共享,测试停止并删除 docker01 容器之后,docker02,docker03 的数据存在且依然可以同步数据


多个 MySQL 实现数据共享

  1. 创建 mysql01 容器

docker run -d -p 3310:3306 -v /etc/mysql/conf.d -v /var/lib/mysql -e MYSQL_ROOT_PQSSWORD=123456 --name mysql01 mysql:5.7
复制代码
  1. 创建 mysql02 容器,同步 mysql01 容器

通过 --volumes-from 实现数据共享(继承)

docker run -d -p 3310:3306 -e MYSQL_ROOT_PQSSWORD=123456 --name mysql02 --volumes-from mysql02 mysql:5.7
复制代码


结论:

  1. 容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器为止。

  2. 同步到宿主机本机的数据,本地持久化




我是 甜点cc

热爱前端,也喜欢专研各种跟本职工作关系不大的技术,技术、产品兴趣广泛且浓厚,等待着一个创业机会。本号主要致力于分享个人经验总结,希望可以给一小部分人一些微小帮助。


希望能和大家一起努力营造一个良好的学习氛围,为了个人和家庭、为了我国的互联网物联网技术、数字化转型、数字经济发展做一点点贡献。数风流人物还看中国、看今朝、看你我。

发布于: 刚刚阅读数: 3
用户头像

甜点cc

关注

看见另一种可能 2020-04-30 加入

欢喜勇猛

评论

发布
暂无评论
Docker | 数据持久化与数据共享_Docker_甜点cc_InfoQ写作社区