1 . 使用场景

  在docker 容器被删除的时候  希望数据不丢失

2 . Volume 的使用

  * 注意 在 mysql 的 Dockerfile 内 定义了 VOLUME ["var/lib/mysql"]

  创建一个 mysql 的container

  sudo docker run -d --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql

  sudo docker logs mysql1 查看 mysql1 的日志

  查看 volume 使用情况 即可看到 mysql volume 使用情况

  sudo docker volume ls

  

  sudo docker volume rm [VOLUME NAME 上面 VOLUME 的全名]

  查看 volume 详情

  docker volume inspect [VOLUME NAME 上面 VOLUME 的全名]

  

  其中 红线部分为 数据挂载的地方

  

  创建 第二个 mysql container

  sudo docker run -d --name mysql2 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql

  查看 volume  列表

  sudo docker volume ls

  查看 第二个 volume 详情

  sudo docker volume inspect  [VOLUME NAME 上面 VOLUME 的全名]

  验证 volume 不会随 container 的删除而删除

    停止并删除 mysql1 mysql2

    docker stop mysql1 mysql2 && docker rm mysql1 mysql2

    查看volume  发现docker volume 还在

    docker volume ls

    

    volume 起别名   -v 参数

    重新创建 mysql1 container  并将mysql的数据存储位置命名为mysql

    sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql

    再次查看生成 volume  发现生成的 volume 为 mysql 了

    docker volume ls

    

    判断 volume 是否生效

      进入 mysql1 容器内

        docker exec -it mysql1 /bin/bash

      进入mysql

        mysql -u root  即可

        create database docker;    创建docker 数据库

        show databases;     查看数据库是否创建成功

        exit        退出mysql

       退出 mysql1 容器

        exit

      关闭并删除 mysql1 容器

      docker rm -f mysql1

      查看mysql1 的 volume  发现mysql 的 volume 还在

      docker volume ls

      重新创建 mysql1 并指定volume 还是 mysql

      sudo docker run -d -v mysql:/var/lib/mysql --name mysql1 -e MYSQL_ALLOW_EMPTY_PASSWORD=true mysql

      查看 volume

      docker volume ls

      到 mysql1 容器内查看 docker 数据库是否还存在

      docker exec -it mysql /bin/bash

      mysql -u root

      show databases;  发现 docker 数据库还在

      

      

      

22. docker 数据持久化 Data Volume的更多相关文章

  1. docker数据持久化/共享---volume,bind-mount,tmpfs-mount

    一.将Docker数据挂载到容器 在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中.目前Docker提供 ...

  2. Docker数据持久化及实战(Nginx+Spring Boot项目+MySQL)

    Docker数据持久化: Volume: (1)创建mysql数据库的container docker run -d --name mysql01 -e MYSQL_ROOT_PASSWORD= my ...

  3. Docker 容器数据卷(Data Volume)与数据管理

    卷(Volume)是容器中的一个数据挂载点,卷可以绕过联合文件系统,从而为Docker 提供持久数据,所提供的数据还可以在宿主机-容器或多个容器之间共享.通过卷,我们可以可以使修改数据直接生效,而不必 ...

  4. Docker系列教程05-Docker数据卷(Data Volume)学习

    引言 在Docker中,容器的数据读写默认发生在容器的存储层,当容器被删除时其上的数据将会丢失.要想实现数据的持久化,需要将数据从宿主机挂载到容器中.目前Docker提供了三种方式将数据从宿主机挂载到 ...

  5. Docker数据持久化与容器迁移

    上节讲到当容器运行期间产生的数据是不会在写镜像里面的,重新用此镜像启动新的容器就会初始化镜像,会加一个全新的读写入层来保存数据.如果想做到数据持久化,Docker提供数据卷(Data volume)或 ...

  6. docker数据持久化

    转载/参考: https://www.jianshu.com/p/ef0f24fd0674 Docker的数据持久化主要有两种方式: bind mount docker managed volume ...

  7. docker数据卷(Data Volumes)

    Docker宿主机和容器之间文件拷贝docker copy 前言: Docker 数据管理 在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行 数据共享,这必然涉及 ...

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

    数据持久化(安装MySQL) 参考另一篇Docker安装mysql: https://www.cnblogs.com/all-smile/p/16778376.html MySQL的数据持久化问题 # ...

  9. docker 数据持久化

    confluence #!/bin/bash docker run \ --name confluence \ --volume "$PWD/data/opt":/opt \ -- ...

随机推荐

  1. WTL之手动编写框架窗口

    新版博客已经搭建好了,有问题请访问 htt://www.crazydebug.com 本人是一个实践主义者,不罗嗦上一篇工程搭建好以后,这一篇就开始写代码,写之前再说几句,如果你熟悉MFC分析过MFC ...

  2. Gauss列主消元

    问题:1.列主消元为什么精度高? 2.fabs函数精确度 #include<iostream> #include<cstdio> #include<cstring> ...

  3. python中添加requests资源包

    1.进入资源网址下载:https://www.lfd.uci.edu/~gohlke/pythonlibs/ 2.按下CTRL+F进行页面查找“requests” 3.点击requests-2.22. ...

  4. 162-PHP 文本替换函数str_replace(三)

    <?php $str='Hello world!'; //定义源字符串 $search=array('o','l','w'); //定义将被替换的字符数组 $replace='O'; //定义替 ...

  5. T_SQL 将一列多行数据合并为一行

    SQL Server在进行数据迁移和报表处理的时候会遇到将一列多行数据拼接为一个字符串的情况,为了处理这个问题,在网上找了一些相关的资料,提供两种方法,供遇到类似问题的朋友们参考,也借此加深自己的印象 ...

  6. Glusterfs volume 的三种挂载方式

    在上一篇中我们介绍了Glusterfs在CentOS7上的安装,并且提到Glusterfs client端有三种:Native client,NFS,Samba, 今天我们就来一起学习下这三种方式. ...

  7. POJ-3984 迷宫问题(BFS找最短路径并保存)

    问题: 定义一个二维数组:  int maze[5][5] = { 0, 1, 0, 0, 0, 0, 1, 0, 1, 0, 0, 0, 0, 0, 0, 0, 1, 1, 1, 0, 0, 0, ...

  8. java集合对象实现原理

    1.集合包 集合包是java中最常用的包,它主要包括Collection和Map两类接口的实现. 对于Collection的实现类需要重点掌握以下几点: 1)Collection用什么数据结构实现? ...

  9. UML-设计模式-对一组相关的对象使用抽象工厂模式

    1.场景 问题: javapos驱动,有2套,一套是IBM的,另一套是NCR的.如: 使用IBM硬件时要用IBM的驱动,使用NCR的硬件时要用NCR的驱动.那该如何设计呢? 注意,此处需要创建一组类( ...

  10. (简单模拟)P1540 机器翻译

    题解: #include<iostream>#include<cmath>using namespace std; int main(){ int m,n; cin>&g ...