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/

#使用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  

原文地址:https://www.cnblogs.com/elvi/p/8463673.html

时间: 2024-10-10 11:15:31

docker volume 创建、使用、备份、使用nfs存储的相关文章

k8s实践17:kubernetes对接nfs存储实现pvc动态按需创建分配绑定pv

1.开始前的想法.前面测试pv&&pvc的部署和简单配置应用,实现pod应用数据存储到pvc并且和pod解耦的目的.前面操作是全手动操作,手动创建pv,手动创建pvc,如果集群pod少,这样操作可以.假如集群有1000个以上的pod,每个pod都需要使用pvc存储数据,如果只能手动去一个个创建pv,pvc,工作量不可想像.如果可以创建pod的时候,创建pod的用户定义pvc,然后集群能够根据用户的pvc需求创建pv,实现动态的pv&&pvc创建分配.kubernetes支持

[转载] 深入理解docker volume

原文: http://dockerone.com/article/128 相对于程序包而言, 大量的数据文件的部署和管理(比如mysql数据库文件)是云平台领域不太容易解决的问题, 需要考虑非常多的因素, 比如网络带宽, 比如磁盘IO限速, 比如跨机房带宽控制等等. docker的volume概念, 把程序和数据进行了分离, 从而达到按需管理的目的. 本文讲解了docker volume的用法和使用场景. 深入理解Docker Volume(一) [编者的话]本文主要介绍了Docker Volu

docker volume

1.docker volume原理 docker镜像是由多个文件系统(只读层)叠加而成的.启动一个容器时,会加载只读层并在其上创建一个可读写层.所以,容器中更改据都存放在这个可读写层中,当删除docker容器,并通过该镜像重新启动,之前的更改将会丢失. volume可以将容器以及容器产生的数据分离开来,这样,但是用docker rm container删除容器时,不会影响相关的数据. 2.docker volume的管理方式 (1)数据卷 据卷是一个或多个容器专门指定绕过Union File S

5)NFS存储实时复制原理

项目案例: 1.sudo集权分治的权限管理及命令行日志审计 2.全网数据备份解决方案 3.共享存储实时备份(共享存储的单点解决方案) 第一个里程碑: 1)实现从NFS客户端到rsync服务端的rsync服务部署. 第二个里程碑: 1)实现从NFS客户端对NFS目录文件系统事件的实时监控. 第三个里程碑: 1)当监控到NFS目录文件系统事件变化后,触发rsync推送变化文件. #!/bin/bash /usr/bin/inotifywait -mrq --format '%w%f' -e clos

openstack:将cinder-volume后端配置为nfs存储

一.配置控制节点的nfs服务--nfs服务端 1. 在控制节点192.168.15.180上配置nfs服务 # yum install nfs-utils portmap # yum -y install nfs-utils rpcbind 创建nfs服务的目录: #mkdir  /root/nfs_dir 改配置: [[email protected] nfs_dir(keystone_admin)]# cat /etc/exports /var/nfs *(rw,sync,no_root_s

部署NFS存储服务(下)

作者:Georgekai 归档:学习笔记 2018/1/25 部署NFS存储服务(下) 2.1 服务端有关的配置 2.1.1 练习题:共享不同的俩个目录,分别赋予读和写权限 服务端部署过程: 第一个里程:编写nfs配置文件 vim /etc/exports /data/w  172.16.1.0/24(rw,sync,all_squash) /data/r  172.16.1.0/24(ro,sync,all_squash) 注:服务端配置文件中,尽量避免继承权限的发生(因权限大的会生效) 第二

NFS存储服务(下)

第1章 回顾及练习 1.1  回顾总结 1.1.1 NFS存储服务是什么? 网络文件系统,实现数据共享统一一致 1.1.2 NFS工作原理 1. 什么是rpc服务 rpc服务类似于中介,nfs服务将启动的进程和端口信息,向rpc服务进行注册 nfs客户端向rpc服务发出请求,进行共享目录挂载,从而实现通过网络存储数据信息 2. 服务端做了三件事: ①. 首先启动rpc服务 ②. 其次启动nfs服务 ③. nfs服务向rpc服务进行注册,只注册一次(如果nfs服务进行了重启,会再次注册) 3. 客

LNMP架构数据迁移到NFS存储

01:先将原有目录中数据移出(web01服务器上)mkdir /tmp/wordpress_backup -p 创建数据备份目录cd /application/nginx/html/blog/wp-content/uploadsmv ./* /tmp/wordpress_backup/ 将数据移动到备份目录当中,挂载之前必须备份,防止数据丢失 数据存储到本地什么位置,获取方法 ①. 通过网站页面右键点击,获取资源地址信息 ②. find命令利用-mmin 5 ③. 利用inotify服务监控目录

k8s无脑系列(三)-NFS存储(简单版本)

k8s无脑系列(三)-NFS存储(简单版本) 1.概念 搞清楚pv,pvc pv = PersistentVolume 持久化存储控制器,面向集群而不是namespace. pvc = PersistentVolumeClaim 对接pod与pv, 关系,官方说明 A PVC to PV binding is a one-to-one mapping, using a ClaimRef which is a bi-directional binding between the Persisten