005.Docker存储管理
一 Docker volume形态
- 默认,即无Docker volume
- Data volume (数据卷)
- data container(数据卷容器)
二 默认无volume
三 Data volume (数据卷)
3.1 -v挂载容器内目录
- 数据卷是目录或文件,而非没有格式化的磁盘(块设备)
- 数据卷可以在容器之间共享和重用
- 对数据卷的修改会立马生效
- 对数据卷的更新,不会影响镜像
- 数据卷默认会一直存在,即使容器被删除
- -d:后台进程;
- -p:映射端口,物理机端口:容器端口;
- -v:物理机文件夹:容器的目录(容器中目录如果不存在,会自动创建,如果存在,会覆盖掉),即将宿主机中的目录挂载到镜像中的目录。
|
类型
|
挂载固定目录
|
自动映射目录
|
|
volume 位置
|
可任意指定
|
/var/lib/docker/volumes/……
|
|
对已有mount point 影响
|
隐藏并替换为 volume
|
原有数据复制到 volume
|
|
是否支持单个文件
|
支持
|
不支持,只能是目录
|
|
权限控制
|
可设置为只读,默认为读写权限
|
无控制,均为读写权限
|
|
移植性
|
移植性弱,与host path绑定
|
移植性强,无需指定host目录
|
root@docker:~# docker inspect b7 | grep -A11 "Mounts"
root@docker:~# echo "Hello web01!" >/webroot/index.html
root@docker:~# echo "Hello web02!" >/var/lib/docker/volumes/725d7d76ec8eb10f5730fe5663cb1d1eb7481efaa2a5a790343dca5d0557564a/_data/index.html




3.2 -v挂载文件
root@docker:~# docker run --rm -it --name centos7-01 -v ~/.bashrc:/root/.bashrc centos:7
四 docker的数据共享
4.1 docker容器与宿主机共享数据
docker cp [OPTIONS] CONTAINER:PATH LOCALPATH|-
docker cp [OPTIONS] LOCALPATH|- CONTAINER:PATH
root@docker:~# docker cp /root/.vimrc centos7-01:/root/ #从宿主机拷贝至容器
root@docker:~# docker cp centos7-01:/root/.vimrc /root/.vimrc_bak #从容器拷贝至宿主机
4.2 docker容器之间共享数据
root@docker:~# docker run -d -p 1010:80/tcp --name web03 -v /webroot:/usr/local/apache2/htdocs httpd
root@docker:~# docker run -d -p 2020:80/tcp --name web04 -v /webroot:/usr/local/apache2/htdocs httpd
root@docker:~# echo "This is share file!" >/webroot/index.html
4.2 docker容器与容器共享数据
五 data container(数据卷容器)
5.1 创建数据卷容器
root@docker:~# docker create --name sharefile01 -v /data:/usr/local/apache2/htdocs centos:7
root@docker:~# docker inspect sharefile01 | grep -A11 "Mounts"

5.2 引用数据卷容器
root@docker:~# docker run -d -p 3030:80/tcp --name web05 --volumes-from sharefile01 httpd
root@docker:~# docker run -d -p 4040:80/tcp --name web06 --volumes-from sharefile01 httpd
root@docker:~# echo "This is share file two!" >/data/index.html
六 volume管理
6.1 创建volume卷
root@docker:~# docker volume create --name data02
root@docker:~# docker volume inspect data02

6.2 使用volume卷
root@docker:~# docker run -d -p 5050:80/tcp --name web07 -v data02:/usr/local/apache2/htdocs httpd
root@docker:~# echo "Hello web07!" > /var/lib/docker/volumes/data02/_data/index.html
6.3 查看volume卷
root@docker:~# docker volume ls #查看所有volume卷
root@docker:~# docker volume ls -qf dangling=true #查看所有孤儿卷
6.4 删除volume卷
root@docker:~# docker volume rm 95704ae78c05261a46d2dc1f2bf872a8c3dc634817e7c0db53e7e6d40f2dc8ea
root@docker:~# docker volume rm $(docker volume ls -qf dangling=true) #删除孤儿卷
6.5 删除容器时删除 volume
root@docker:~# docker run -d -p 6060:80/tcp --name web08 -v /usr/local/apache2/htdocs httpd
root@docker:~# docker inspect web08

root@docker:~# docker rm -vf web08
root@docker:~# docker volume ls
七 volume数据备份及还原
7.1 备份
root@docker:~# docker run -d -p 1111:80/tcp --name web09 -v /usr/local/apache2/htdocs httpd
root@docker:~# docker inspect web09 | grep -A11 "Mounts"
root@docker:~# echo "This is web09 backup test!">/var/lib/docker/volumes/16aa6956e7076ecb9f256c302833640880e3bb1b8602771cca378e7230975488/_data/index.html

root@docker:~# docker run --volumes-from web09 --name mydatabackup -v /mybackup:/databack httpd tar zcf /databack/http-backup.tar.gz /usr/local/apache2/htdocs

7.2 还原
root@docker:~# docker run -d -v /usr/local/apache2/htdocs --name temp01 httpd
root@docker:~# docker run --volumes-from temp01 --name web10 -v /mybackup:/databack httpd tar zxf /databack/http-backup.tar.gz
#此步骤执行完毕即将备份文件已经还原至容器的/usr/local/apache2/htdocs。
root@docker:~# docker run -d -p 2222:80/tcp --name web11 --volumes-from temp01 httpd

005.Docker存储管理的更多相关文章
- docker存储管理及实例
一.Docker存储概念 1.容器本地存储与Docke存储驱动 容器本地存储:每个容器都被自动分配了内部存储,即容器本地存储.采用的是联合文件系统.通过存储驱动进行管理. 存储驱动:控制镜像和容器在 ...
- Docker入门 - 005 Docker 容器连接
Docker 容器连接 前面我们实现了通过网络端口来访问运行在docker容器内的服务.下面我们来实现通过端口连接到一个docker容器 网络端口映射 我们创建了一个 python 应用的容器. do ...
- 附005.Docker Compose文件详解
一 Docker Compose文件简介 compose文件使用yml格式,主要分为了四个区域: version:用于指定当前docker-compose.yml语法遵循哪个版本 services:服 ...
- docker存储管理
Docker 镜像的元数据 repository元数据 repository在本地的持久化文件存放于/var/lib/docker/image/overlay2/repositories.json中 ...
- 附007.Docker全系列大总结
Docker全系列总结如下,后期不定期更新. 欢迎基于学习.交流目的的转载和分享,禁止任何商业盗用,同时希望能带上原文出处,尊重ITer的成果,也是尊重知识. 若发现任何错误或纰漏,留言反馈或右侧添加 ...
- 云计算Docker全面项目实战(Maven+Jenkins、日志管理ELK、WordPress博客镜像)
2013年,云计算领域从此多了一个名词“Docker”.以轻量著称,更好的去解决应用打包和部署.之前我们一直在构建Iaas,但通过Iaas去实现统一功 能还是相当复杂得,并且维护复杂.将特殊性封装到 ...
- 附003.Docker Compose命令详解
一 Docker Compose命令格式 Usage: docker-compose [-f <arg>...] [options] [COMMAND] [ARGS...] docker- ...
- Docker之存储管理
本文由作者邹珍珍授权网易云社区发布. 本文主要介绍Docker的存储管理.Docker拥有镜像分层,写时复制机制以及内容寻址存储等特征,为了支持这些特征,Docker设计了一套镜像元数据管理机制来管理 ...
- Docker 镜像之存储管理
笔者在<Docker 镜像之进阶篇>中介绍了镜像分层.写时复制以及内容寻址存储(content-addressable storage)等技术特性,为了支持这些特性,docker 设计了一 ...
随机推荐
- JavaScript学习 - 基础(四) - 控制语句/异常处理
控制语句 if-else 语句 <script> //控制语句 //if-else格式: var x = 1 if(x==1){ console.log("this is if& ...
- 函数前加static与不加static的区别
1:加了static后表示该函数失去了全局可见性,只在该函数所在的文件作用域内可见 2:当函数声明为static以后,编译器在该目标编译单元内只含有该函数的入口地址,没有函数名,其它编译单元便不能通过 ...
- SpringBoot定制错误页面
(1)有模板引擎的情况下,例如404错误,将会在thymeleaf的templates的error下寻找404.html,如果找不到再寻找4xx.html *所有4开头的错误状态码如果找不到特定的ht ...
- ORB feature(O for orientation)
参考链接:http://blog.csdn.net/yang843061497/article/details/38553765 绪论 假如我有2张美女图片,我想确认这2张图片中美女是否是同一个人.这 ...
- SharePoint 2013 Workflow Manager 1.0 卸载
一:环境 Window server 2012 r2 Standard SharePoint Server 2013 with sp1 二:开始菜单---Workflow Manager 配置---退 ...
- VC++常用数据类型及其操作详解
原文地址:http://blog.csdn.net/ithomer/article/details/5019367 VC++常用数据类型及其操作详解 一.VC常用数据类型列表 二.常用数据类型转化 2 ...
- 前端web服务器数据同步方案
概述: 网站采用了web和mysql数据库分离的架构,前端有web1.web2.web3需要对他们进行上传文件同步 方案: 在web2的windows服务器上安装GoodSync软件,利用其双向同步特 ...
- 转载:2.2 Nginx配置的通用语法《深入理解Nginx》(陶辉)
原文:https://book.2cto.com/201304/19625.html Nginx的配置文件其实是一个普通的文本文件.下面来看一个简单的例子.user nobody; worker_p ...
- Ex 3_25 图中每个顶点有一个相关价格..._十一次作业
(a)首先对有向无环图进行拓扑排序,再按拓扑排序的逆序依次计算每个顶点的cost值,每个顶点的cost值为自身的price值与相邻顶点间的cost值得最小值 (b)求出图中的每一个强连通分量,并把所有 ...
- dispatchers 设置
Oracle连接方式(dispatchers 设置) oracle 响应客户端请求有两种方式: 1 专有连接:用一个服务器进程响应一个客户端请求 2 共享连接:用一个分派器(dispatcher)响应 ...