Docker(七):Docker容器卷管理
1、使用容器卷的原因:Docker容器产生的数据,如果不通过commit生成新的镜像,数据会在容器删除后丢失。为了能持久化保存和共享容器的数据,Docker提出了两种管理数据的方式:数据卷和数据卷容器。
2、数据卷操作
2.1 增加新数据卷
docker run -d -v /tmpd/busyboxtest --name busyboxtest busybox
-v参数会在容器的/tmp/busybox下创建一个新的容器卷
通过docker inspect命令查看数据卷的位置
docker inspect busyboxtest | grep volumes
"/tmp/busyboxtest": "/var/lib/docker/volumes/577784c9e8aa3fba15ebf56ee680b6fea50aafe60bd753b64c3699e461fa3e39/_data"
2.2 将主机目录挂载为数据卷
docker run -tid -v /tmp/volumetest:/data:ro --name busyboxtest2 busybox
将宿主机的/tmp/volumetest以ro的方式挂载在/data下

2.3 创建数据卷容器
如果需要在容器之间共享一些持续更新的数据,最简单的方式使用数据卷容器
首先创建一个数据卷容器dbdata并在其中创建一个数据卷挂载到/dbdata
docker run -it -v /dbdata --name dbdata ubuntu
然后在其他容器使用--volume-from来挂载dbdata容器中的数据卷
docker run -it --volume-from dbdata --name db1 ubuntu
docker run -it --volume-from dbdata --name db2 ubuntu
此时容器db1和db2挂载同一个数据卷到/dbdata目录,三个容器任何一方写入,其他容器都可以看到
--volume-from多次指定可以挂载多个数据卷,并且--volume-from参数所挂载数据卷的容器并不需要运行
如果删除了挂载的容器,数据卷并不会自动删除,如果删除一个数据卷,需要删除最后一个还挂着他的容器使用docker rm -v
2.4 数据卷备份恢复
2.4.1 备份:
备份dbdata数据卷容器内的数据卷
docker run --volume-from dadata -v $(pwd):/backup --name worker ubuntu tar cvf /backup/backup.tar.gz /dbdata
命令解释:使用ubuntu镜像创建一个叫worker的容器,并将本机的当前目录挂载到worker容器的/backup目录。然后使用--volume-from挂载dbdata容器的数据卷,容器启动后将打包/dbdata目录到/backup目录下。同时也存在了本机的当前目录下
2.4.2 恢复:
恢复数据到一个容器
首先创建一个带有数据卷的容器docker run -v /dbdata --name dbdata2 ubuntu /bin/bash
之后在创建一个新的容器,挂载dbdata2的容器,并使用untar解压备份文件到所挂载的容器即可
docker run --volume-from dbdata2 -v $(pwd):/backup busybox tar xf /backup/backup.tar.gz
3、容器互联
首先创建一个数据库容器:
docker run -d --name db mysql
创建一个新的web容器,并将它连接到db容器:
docker run -d -P --name web --link db:db nginx
此时db容器和web容器建立互联,其中--link db:db是name:alias name是连接容器的名称,alias这个连接的别名
使用docker ps查看到db和web容器,其中db容器的names列有db和web/db,这表示web容器连接到db容器,允许web容器访问db容器的信息
Docker(七):Docker容器卷管理的更多相关文章
- Docker进阶:容器卷、DockerFile、Docker网络原理
1.Docker镜像 1.1镜像是什么 镜像是一种轻量级.可执行的独立软件包,用来打包软件运行环境和机遇运行环境开发的软件. 包含一个软件的所有内容.蒋所有的应用和环境,直接打包为docker镜像,直 ...
- docker守护式容器运行管理
docker守护式容器适合运行应用程序和服务 以交互方式进入容器 docker run -it centos /bin/bash 以交互方式进入 并设置镜像名称和运行后的主机名称 退出交互式容器并让 ...
- docker数据卷管理及网络基础配置
数据卷 数据卷容器 数据卷迁移数据 端口映射 容器间通信 数据卷的管理 当需要查看容器内应用产生的数据或者把容器内数据备份及多个容器数据共享.有两种方式,数据卷以及数据卷容器. 数据卷 数据卷是一个可 ...
- Docker学习笔记之docker volume 容器卷的那些事(一)
预览目录 volume 方式 相关用例 使用方式 使用 volume driver bind mount 方式 相关用例 使用方式 配置selinux标签 配置macOS的安装一致性 tmpfs 方式 ...
- Docker实践(二):容器的管理(创建、查看、启动、终止、删除)
docker官方文档地址如下:[https://docs.docker.com/engine/reference/](https://docs.docker.com/engine/reference/ ...
- Docker 基础知识 - 使用卷(volume)管理应用程序数据
卷(volumes)是 Docker 容器生产和使用持久化数据的首选机制.绑定挂载(bind mounts)依赖于主机的目录结构,卷(volumes)完全由 Docker 管理.卷与绑定挂载相比有几个 ...
- Docker学习第三天(Docker数据卷管理)
1.Docker数据卷管理 在Docker中,要想实现数据的持久化(所谓Docker的数据持久化即数据不随着Container的结束而结束),需要将数据从宿主机挂载到容器中.目前Docker提供了三种 ...
- 【docker专栏8】使用IDEA远程管理docker镜像及容器服务
使用命令行的方式管理服务器镜像及容器是运维人员最常用的方式,但是有的时候我们不得不远程操作docker或者是面向对docker并不熟悉的技术人员提供能力(配置管理员.测试人员),这种情况下图形界面就有 ...
- Docker背后的容器管理——Libcontainer深度解析
Libcontainer 是Docker中用于容器管理的包,它基于Go语言实现,通过管理namespaces.cgroups.capabilities以及文件系统来进行容器控制.你可以使用Libcon ...
随机推荐
- Spark SQL中的几种join
1.小表对大表(broadcast join) 将小表的数据分发到每个节点上,供大表使用.executor存储小表的全部数据,一定程度上牺牲了空间,换取shuffle操作大量的耗时,这在SparkSQ ...
- C语言一些知识点总结
一.关键字 1. 什么是关键字 1> 关键字就是C语言提供的有特殊含义的符号,也叫做“保留字” 2> C语言一共提供了32个关键字,这些关键字都被C语言赋予了特殊含义 auto doubl ...
- P1040 加分二叉树
转自:(http://www.cnblogs.com/geek-007/p/7197439.html) 经典例题:加分二叉树(Luogu 1040) 设一个 n 个节点的二叉树 tree 的中序遍历为 ...
- React 页面间传值的个人总结
react 组件之间传值的方案有很多,下面是我个人经验的总结 props 来传递值 传值方式: 通过props 获取值 通过props 提供的func去修改值 优点: 不需要任何第三方的组件,纯rea ...
- String、StringBuilder和StringBuffer
1.string不可变性 java的docs有这样一句话:Strings are constant; their values cannot be changed after they are cre ...
- Laravel 框架安装
Composer 在命令行执行 create-project 来安装 Laravel:就是下面这一句话就OK了!composer create-project laravel/laravel --pr ...
- webMagic解析淘宝cookie 提示Invalid cookie header
webMagic解析淘宝cookie 提示Invalid cookie header 在使用webMagic框架做爬虫爬取淘宝极又家页面时候一直提醒cookie设置不可用如下图 淘宝的验证特别严重,c ...
- TP3.2 图片上传及缩略图
基于TP自带的上传文件的类, Think/Upload.class.php 设置表单的enctype属性 下面是上传的具体方法 /** * 图片上传处理 * @param [String] $path ...
- 表单的自动到json与urlstr
将表单序列化成json,将json转换成字符串 //将表单序列化成json 字符串 $.fn.serializeObject = function(){ var obj = {}; var count ...
- ChromeExtension那些事儿
Chrome Extension是什么呢? 简而言之,就是Chrome扩展,它是基于Chrome浏览器的,我们可以理解它为一个独立运行在Chrome浏览器下的APP,当然核心编程语言就是JavaScr ...