docker volume创建、备份、nfs存储
docker存储volume
环境 centos7.4 , Docker version 17.12.0-ce
docker volume创建、备份、nfs存储
#docker volume
数据存容器内,删容器即销毁全部数据
要保留的数据(数据持久化),需存储在容器外
docker volume是文件或目录,mount到docker容器中使用
- docker volume
- bind muount #挂载任意目录或文件
- Volumes #固定路径的目录,docker管理
- tmpfs mounts #存放宿主机内存中

docker volume 官网文档地址 https://docs.docker.com/storage/volumes/
#bind muount实例
#docker挂载文件或目录到容器
#创建目录及文件
mkdir -p /data/test1
echo 'docker volume'>/data/test1/test.txt
#创建容器,-v 挂载目录(默认读写权限)
docker run -dit --name busybox1 -v /data/test1:/data/test1 busybox
#查看
docker exec busybox1 cat /data/test1/test.txt
#修改文件后,在查看本地是否更改
docker exec busybox1 echo my files>>/data/test1/test.txt
docker exec busybox1 cat /data/test1/test.txt
cat /data/test1/test.txt
为保证Dockerfile可移植,构建镜像不能使用bind muount
#tmpfs mounts
# 使用--tmpfs
docker run -dit --name tmpfs-test --tmpfs /app busybox
#Volumes
不指定挂载目录,默认目录/var/lib/docker/volumes//_data/
docker volumes可管理,官方推荐
.#使用Volumes
#不指定挂载目录,自动创建 volumes/<ID号>/_data/
docker run -dit --name busybox2 -v /data/test busybox
#在容器创建目文件
docker exec busybox2 touch /data/test/test2.txt
#在宿主机查看文件路径
find /var/lib/docker/volumes -name test2.txt
docker inspect busybox2 |grep Source
.#docker volume命令管理
#创建volume
docker volume create volume-test1
#查看参数
docker inspect volume-test1
#使用volume
docker run -dit --name busybox3 -v volume-test1:/volume busybox
#查看
docker inspect -f {{.Mounts}} busybox3
#查看docker数据卷
docker volume ls
#删除没使用的数据卷(谨慎使用)
docker volume prune
Bind mounts和volumes都通过-v或--volume挂载,tmpfs使用--tmpfs
三种都可以使用--mount挂载,格式更清晰,官方推荐使用
#docker volume 数据共享
- 挂载相同目录
- 使用volume container
.#数据卷容器 volume container
--volumes-from 容器名,就会传递容器的挂载目录(volume参数传递)
#创建容器busybox4(不需要启动)
mkdir -p /data/test2
echo 'busybox4'>/data/test2/test.txt
docker create --name busybox4 -v /data/test2:/data/test2 busybox
# --volumes-from 使用其它容器的volume
docker run -dit --name busybox5 --volumes-from busybox4 busybox
#查看
docker exec busybox5 cat /data/test2/test.txt
#挂载多个 数据卷容器
docker run -dit --name busybox6 --volumes-from busybox4 --volumes-from busybox1 busybox
docker exec busybox6 ls /data/ #查看
#docker volume 备份
- 备份volume挂载目录
- 使用容器--volumes-from备份
.#使用数据卷容器备份busybox4的volumes
docker run --rm --volumes-from busybox4 -v $(pwd):/backup busybox \
tar cvf /backup/backup.tar /data/test2/
.
以上docker volume实例,全部在单台docker主机
docker集群环境,需要使用共享存储、分布式存储
#docker volume使用NFS存储
#NFS服务端,配置nfs共享
yum install nfs-utils rpcbind -y
mkdir -p /data/nfs/docker
echo "/data/nfs *(rw,no_root_squash,sync)">>/etc/exports
exportfs -r
systemctl start rpcbind nfs-server
systemctl enable rpcbind nfs-server
showmount -e localhost
#nfs客户端
yum install -y nfs-utils rpcbind
#创建volume 连接 172.16.50.43:/data/nfs
docker volume create --driver local \
--opt type=nfs \
--opt o=addr=172.16.50.43,rw \
--opt device=:/data/nfs \
volume-nfs
#查看
docker volume ls
docker volume inspect volume-nfs
#容器使用volume-nfs
docker run -dit --name busybox7 -v volume-nfs:/nfs busybox
#查看
docker inspect -f {{.Mounts}} busybox7
df -h |grep /data/nfs
#volume目录/var/lib/docker/volumes/volume-nfs/_data自动挂载到了nfs服务上
#容器创文件测试
docker exec busybox7 touch /nfs/testfiles.txt
使用volume driver 可实现更多的backend
##################################
.#删除测试容器,volume
docker rm -f -v tmpfs-test busybox{1,2,3,4,5,6,7}
#-f 强制删除,-v 删除volume
docker volume prune
docker volume创建、备份、nfs存储的更多相关文章
- NFS存储迁移至GlusterFS
NFS存储迁移至GlusterFS 前提条件 为防止脑裂,建议使用最低3台节点制作3复制集的存储卷: 在进行存储迁移前,GluseterFS存储节点需先成为k8s集群中的node节点: 存储切换时请勿 ...
- 存储-docker volume 生命周期管理(14)
volume 生命周期管理 - 每天5分钟玩转 Docker 容器技术(44) Data Volume 中存放的是重要的应用数据,如何管理 volume 对应用至关重要.前面我们主要关注的是 volu ...
- docker volume持久化存储与数据分享
第一种 指定volume文件mysql存储,存储的位置为/var/lib/mysql -v mysql:/var/lib/mysql 第二种 同步文件,将容器中的skeleton文件夹的内容同步到宿主 ...
- rexray在CentOS上不能创建ceph rbd的docker volume问题定位
背景 我们通过docker的rexray插件来创建ceph rbd设备的docker volume,但总提示创建失败. # docker volume create --driver=rexray - ...
- 理解OpenShift(5):从 Docker Volume 到 OpenShift Persistent Volume
理解OpenShift(1):网络之 Router 和 Route 理解OpenShift(2):网络之 DNS(域名服务) 理解OpenShift(3):网络之 SDN 理解OpenShift(4) ...
- Docker 0x06: Docker Volume卷
目录 Docker Volume卷 一句话什么是docker volume? docker volume特性 docker 挂载卷 docker 多容器间共享数据券 删除,查看数据卷 备份还原数据卷 ...
- Docker学习笔记之docker volume 容器卷的那些事(一)
预览目录 volume 方式 相关用例 使用方式 使用 volume driver bind mount 方式 相关用例 使用方式 配置selinux标签 配置macOS的安装一致性 tmpfs 方式 ...
- 深入理解Docker Volume(一)
想要了解Docker Volume,首先我们需要知道Docker的文件系统是如何工作的.Docker镜像是由多个文件系统(只读层)叠加而成.当我们启动一个容器的时候,Docker会加载镜像层并在其上添 ...
- 三.NFS存储服务
01. 课程回顾 备份服务概念介绍(rsync备份服务利用相应算法,实现增量数据同步) 备份服务工作方式说明: 1. 本地数据备份同步方式(类似cp命令) 2. 远程数据备份同步方式(类似scp命令) ...
随机推荐
- python基础——抽象类
python基础--抽象类 1 什么是抽象类 与java一样,python也有抽象类的概念但是同样需要借助模块实现,抽象类是一个特殊的类,它的特殊之处在于只能被继承,不能被实例化 2 为什么要有抽象 ...
- hive:数据库“行专列”操作---使用collect_set/collect_list/collect_all & row_number()over(partition by 分组字段 [order by 排序字段])
方案一:请参考<数据库“行专列”操作---使用row_number()over(partition by 分组字段 [order by 排序字段])>,该方案是sqlserver,orac ...
- 在VS2017中安装OpenGL
由于VS2017支持直接下载有关openGL的库文件,因此给我们带来了很多方便之处,不需要单独下载了. 1.打开VS2017,并新建一个C++控制台项目 2.然后点击 项目-管理Nuget程序包, 点 ...
- Java 微服务框架选型(Dubbo 和 Spring Cloud?)
微服务(Microservices)是一种架构风格,一个大型复杂软件应用由一个或多个微服务组成.系统中的各个微服务可被独立部署,各个微服务之间是松耦合的.每个微服务仅关注于完成一件任务并很好地完成该任 ...
- z-index的学习整理转述
前言:这是笔者第一次写博客,主要是学习之后自己的理解.如果有错误或者疑问的地方,请大家指正,我会持续更新! z-index属性描述元素的堆叠顺序(层级),意思是A元素可以覆盖B元素,但是B元素并没有消 ...
- 使用WSUS离线下载补丁并安装在非联网的windows系统中(以Windows Server 2008 r2为例)
首先我失去https://serverfault.com/questions/322938/finding-and-downloading-all-available-win2008-r2-and-w ...
- 【Android】Mac下Android Studio设置App启动页
先将启动页放到项目资源中,图片一般是1080*1920的jpg. 新建一个activity,如图: 创建成功之后,打开刚刚创建的activity,来进行代码的编写: public class BZLa ...
- 网易云安全两篇论文入选计算机视觉顶级会议ICCV
本文由 网易云发布. 10月22日至29日,全球计算机视觉顶尖专家们共聚威尼斯,参加ICCV2017国际计算机视觉大会,就领域内最新成果展开集中研讨,大会论文集也代表了计算机视觉领域最新的发展方向和 ...
- servlet学习总结
一.web工程结构 1.HTTP协议(hyper text transfer protocol)(超文本传输协议) 机制:请求/响应 机制(request/response)(HttpServletR ...
- [HNOI 2008]玩具装箱
Description P教授要去看奥运,但是他舍不下他的玩具,于是他决定把所有的玩具运到北京.他使用自己的压缩器进行压 缩,其可以将任意物品变成一堆,再放到一种特殊的一维容器中.P教授有编号为1.. ...