(docker笔记):容器数据卷概念、MySQL 同步数据案例

目录

容器数据卷

什么是容器数据卷?

使用数据卷

MySQL 同步数据


容器数据卷

什么是容器数据卷?

  • 将应用和环境打包成一个镜像!
  • 数据?如果数据都在容器中,那么我们容器删除,数据就会丢失。需求:数据可以持久化
  • MySQL,容器删了,删库跑。需求MySQL数据可以存储在本地
  • 容器之间可以有一个数据共享的技术,Docker容器中产生的数据,同步到本地
  • 这就是卷技术目录的挂载,将我们容器内的目录,挂载到Linux上面。

  • 总结一句话:容器的持久化和同步操作,容器间也是可以数据共享的
     

使用数据卷

  • 方式一:直接使用命令来挂载 
docker run -it -v 主机目录:容器内目录
  • 测试:将容器的home目录挂载到主机的home目录下的ceshi目录
 docker run -it -v /home/ceshi:/home centos /bin/bash
  • 进入容器后,进入 home 目录,新建一个文件
touch test.java
ls 查看目录下的内容,能看到这个文件
  • 这个时候切换到主机,或者再开一个终端查看主机的 home 目录下的 ceshi 目录
cd /home/ceshi
ls 查看目录下的内容,发现 test.java 文件已经同步过来了

  • 那再来测试,当我们关掉容器之后数据还能同步吗?
    • 1、先 exit 退出容器
    • 2、docker ps 查看容器是否真的停止了
    • 3、主机上 vim /home/ceshi/test.java 修改文件
    • 4、docker start 启动容器
    • 5、容器内 cat /home/test.java 查看文件内容
  • 能够发现文件内容跟之前修改的是一样的,表示文件已经同步过来了

  • 这种方式的好处就是以后修改只需要在本地修改即可,容器内会自动同步.
  • docker inspect查看挂载信息

MySQL 同步数据

  • 获取 mysql 镜像 这里使用 5.7 版本
docker pull mysql:5.7
  • 运行容器 挂载数据和配置文件,注意mysql启动需要配置密码
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
  • 参数说明:
    • -d 后台运行
    • -p 端口映射
    • -V 卷挂载
    • -e 环境配置
    • --name 容器名字
  • 启动成功之后,可以使用navicat来连接一下mysql 或者 docker exec -it 进入容器 mysql -p 进入 mysql 控制台
  • 创建一个数据库,再查看主机上映射的路径,就能查看到刚刚新创建的数据库文件

  • 删除调这个容器 docker rm -f mysql01
  • 再去主机查看路径 cd /home/mysql/data 下的文件
  • 结果文件依然存在,没有丢失,这就实现了容器数据持久化的功能

猜你喜欢

转载自blog.csdn.net/baidu_41388533/article/details/108555192
今日推荐