22. docker 数据持久化 Data Volume
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的更多相关文章
- docker数据持久化/共享---volume,bind-mount,tmpfs-mount
一.将Docker数据挂载到容器 在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中.目前Docker提供 ...
- Docker数据持久化及实战(Nginx+Spring Boot项目+MySQL)
Docker数据持久化: Volume: (1)创建mysql数据库的container docker run -d --name mysql01 -e MYSQL_ROOT_PASSWORD= my ...
- Docker 容器数据卷(Data Volume)与数据管理
卷(Volume)是容器中的一个数据挂载点,卷可以绕过联合文件系统,从而为Docker 提供持久数据,所提供的数据还可以在宿主机-容器或多个容器之间共享.通过卷,我们可以可以使修改数据直接生效,而不必 ...
- Docker系列教程05-Docker数据卷(Data Volume)学习
引言 在Docker中,容器的数据读写默认发生在容器的存储层,当容器被删除时其上的数据将会丢失.要想实现数据的持久化,需要将数据从宿主机挂载到容器中.目前Docker提供了三种方式将数据从宿主机挂载到 ...
- Docker数据持久化与容器迁移
上节讲到当容器运行期间产生的数据是不会在写镜像里面的,重新用此镜像启动新的容器就会初始化镜像,会加一个全新的读写入层来保存数据.如果想做到数据持久化,Docker提供数据卷(Data volume)或 ...
- docker数据持久化
转载/参考: https://www.jianshu.com/p/ef0f24fd0674 Docker的数据持久化主要有两种方式: bind mount docker managed volume ...
- docker数据卷(Data Volumes)
Docker宿主机和容器之间文件拷贝docker copy 前言: Docker 数据管理 在生产环境中使用 Docker ,往往需要对数据进行持久化,或者需要在多个容器之间进行 数据共享,这必然涉及 ...
- Docker | 数据持久化与数据共享
数据持久化(安装MySQL) 参考另一篇Docker安装mysql: https://www.cnblogs.com/all-smile/p/16778376.html MySQL的数据持久化问题 # ...
- docker 数据持久化
confluence #!/bin/bash docker run \ --name confluence \ --volume "$PWD/data/opt":/opt \ -- ...
随机推荐
- 基于 Annotation 的装配(注解)
注解:就是一个类,使用@注解名称 开发中:使用注解 取代 xml配置文件. 1. @Component取代<bean class=""> @Component(&quo ...
- P1081 检查密码
P1081 检查密码 转跳点:
- Spring源码分析——(001)环境搭建
1.官方参考 spring-framework的github链接:https://github.com/spring-projects/spring-framework 源码环境搭建官方参考1:考如何 ...
- python基础笔记:判断与循环
判断: #根据身高为1.75,体重为65的小明的bmi输出小明的身材 h=1.75 w=65 bmi=w/(h*h) if bmi<18.5: print('过轻') elif bmi<= ...
- android导入项目build错误
android studio apply script build.gradle 卡死 buildscript { repositories { maven{ url 'http://maven.al ...
- 091-PHP数组过滤函数array_filter,过滤非整数
<?php function not_int($x){ //定义过滤非整数的函数 if(is_int($x)) return TRUE; } $arr=array(1,2,'a',3,4,'c' ...
- 【转】AutoMapper对象映射
什么是AutoMapper?AutoMapper是一个简单的小型库,用于解决一个看似复杂的问题 - 摆脱将一个对象映射到另一个对象的代码.这种类型的代码是相当沉闷和无聊的写,所以为什么不发明一个工具来 ...
- Apache部署Django+Vue
首先部署Vue,后端项目django开5000端口,所以vue里的路由是ip:5000,然后打包npm run build 生成dist文件 把dist文件里的index.html和static放在/ ...
- 在mac电脑的terminal里该如何运行c语言
若要在 Mac 的终端中编译并运行 C 源代码,你首先需要安装 Command Line Tools,里面包含有 GCC 编译器.安装方法为: 打开终端,输入 gcc. 如果你没有安装 Command ...
- 使用Linux系统,是一种什么体验?
导读 同事,从事嵌入式软件开发多年,主要开发环境用的就是linux,最疯狂的一段时间直接把系统装成linux系统,然后在linux下面虚拟一个windows操作系统,主要有些事情必须在windows才 ...