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. 基于 Annotation 的装配(注解)

    注解:就是一个类,使用@注解名称 开发中:使用注解 取代 xml配置文件. 1. @Component取代<bean class=""> @Component(&quo ...

  2. P1081 检查密码

    P1081 检查密码 转跳点:

  3. Spring源码分析——(001)环境搭建

    1.官方参考 spring-framework的github链接:https://github.com/spring-projects/spring-framework 源码环境搭建官方参考1:考如何 ...

  4. python基础笔记:判断与循环

    判断: #根据身高为1.75,体重为65的小明的bmi输出小明的身材 h=1.75 w=65 bmi=w/(h*h) if bmi<18.5: print('过轻') elif bmi<= ...

  5. android导入项目build错误

    android studio apply script build.gradle 卡死 buildscript { repositories { maven{ url 'http://maven.al ...

  6. 091-PHP数组过滤函数array_filter,过滤非整数

    <?php function not_int($x){ //定义过滤非整数的函数 if(is_int($x)) return TRUE; } $arr=array(1,2,'a',3,4,'c' ...

  7. 【转】AutoMapper对象映射

    什么是AutoMapper?AutoMapper是一个简单的小型库,用于解决一个看似复杂的问题 - 摆脱将一个对象映射到另一个对象的代码.这种类型的代码是相当沉闷和无聊的写,所以为什么不发明一个工具来 ...

  8. Apache部署Django+Vue

    首先部署Vue,后端项目django开5000端口,所以vue里的路由是ip:5000,然后打包npm run build 生成dist文件 把dist文件里的index.html和static放在/ ...

  9. 在mac电脑的terminal里该如何运行c语言

    若要在 Mac 的终端中编译并运行 C 源代码,你首先需要安装 Command Line Tools,里面包含有 GCC 编译器.安装方法为: 打开终端,输入 gcc. 如果你没有安装 Command ...

  10. 使用Linux系统,是一种什么体验?

    导读 同事,从事嵌入式软件开发多年,主要开发环境用的就是linux,最疯狂的一段时间直接把系统装成linux系统,然后在linux下面虚拟一个windows操作系统,主要有些事情必须在windows才 ...