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. sprintf与sscanf用法举例

    一.sscanf 从tmp中读取a,b,c. int main(){ ]; int a; double b; ]; while(gets(tmp) != NULL){ sscanf(tmp, &quo ...

  2. idea开发springboot 的mysql数据库连接问题

    今天在家用idea进行springboot开发,前面一些坑相对避免了,但是到数据库这块总是连接不上,报错主要是: Access denied for user 'root'@'localhost' ( ...

  3. tomcat-jvm内存问题

    http://www.360doc.com/content/14/0617/12/114824_387440563.shtml http://27091497.blog.163.com/blog/st ...

  4. js基础学习之-js全局对象

    声明的三种方式: 第一种: var test; //或var test = 5; 第二种: test = 5; 第三种: window.test; //或window.test = 5; //只是使用 ...

  5. jedis哨兵模式的redis组(集群),连接池实现。(客户端分片)

    java 连接redis 我们都使用的 是jedis  ,对于redis这种频繁请求的场景我们一般需要对其池化避免重复创建,即创建一个连接池 ,打开jedis的 jar包我们发现,jedis对池已经有 ...

  6. Day 19:Properties配置文件类、打印流(printStream) 、 编码与解码

    Properties(配置文件类): 主要用于生产配置文件与读取配置文件的信息. Properties要注意的细节:  1. 如果配置文件的信息一旦使用了中文,那么在使用store方法生成配置文件的时 ...

  7. 《ES6标准入门》(阮一峰)--2.let 和 const 命令

    1.let命令 基本用法 let只在命令所在的代码块内(花括号内)有效. for循环的计数器,就很合适使用let命令. //var var a = []; for (var i = 0; i < ...

  8. vue-router 二级路由(父子路由)

    使用二级路由 会显示父路由下面的子路由  且父子路由同时显示 因为父子同时显示  路由地址在同一级别/ 路由的显示模式有两种(都是为了减少数据库后台请求次数) #hash模式(#是特殊字符,很多场合不 ...

  9. UVA 11992 懒惰标记应用

    这个题目要求和 还有 设置区间值 区间增值,明显要用线段树来 由于行数不超过20 而列数多达 10^5,所以对每一行建一棵线段树. 然后主要是在懒惰标记方面是难点 针对两种操作 分别设置 set 和 ...

  10. 路飞学城—Python爬虫实战密训班 第二章

    路飞学城—Python爬虫实战密训班 第二章 一.Selenium基础 Selenium是一个第三方模块,可以完全模拟用户在浏览器上操作(相当于在浏览器上点点点). 1.安装 - pip instal ...