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--Selectors模块/队列
Selectors模块/队列 一 Selectors模块 IO多路复用实现机制 Win: select Linux:select(效率低) poll epoll(最好)默认选择epoll sele ...
- 在VS2017中安装OpenGL
由于VS2017支持直接下载有关openGL的库文件,因此给我们带来了很多方便之处,不需要单独下载了. 1.打开VS2017,并新建一个C++控制台项目 2.然后点击 项目-管理Nuget程序包, 点 ...
- append()/extend()/insert()/remove()/del/pop()/slice列表分片
member = ['小甲鱼', 88, '黑夜', 90, '迷途', 85, '怡静', 90, '秋舞斜阳', 88] member.append('字符串')#在列表结尾处增加字符串 memb ...
- 使用 C# (.NET Core) 实现命令设计模式 (Command Pattern)
本文的概念内容来自深入浅出设计模式一书. 项目需求 有这样一个可编程的新型遥控器, 它有7个可编程插槽, 每个插槽可连接不同的家用电器设备. 每个插槽对应两个按钮: 开, 关(ON, OFF). 此外 ...
- java内部类、接口、集合框架、泛型、工具类、实现类
.t1 { background-color: #ff8080; width: 1100px; height: 40px } 一.内部类 1.成员内部类. (1)成员内部类的实例化: 外部类名.内部类 ...
- javascript/TypeScript 生成GUID
export const guid = () => { return `xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx`.replace(/[xy]/g, functi ...
- CentOS下安装yum
在Linux里面依次输入下面的命令: 1,下载最新的yum-3.2.28.tar.gz并解压 wget http://yum.baseurl.org/download/3.2/yum-3.2.28.t ...
- 【Android学习笔记】布局的简单介绍
我在学习Android开发的时候是基于实战项目的,基础理论知识以前也是零散的看过一些,个人还是觉得边做项目边学要快些.现在做的这个项目iOS端是我做的,这样逻辑什么的都很熟悉,于我而言换个平台也只是换 ...
- Diango + uwsgi + nginx 项目部署(可外网访问)
自己通过nginx uwsgi 部署django项目,查询了很多资料,遇到了很多问题,最终完成了部署,趁着心情愉悦,写个随笔,为曾像我一样苦寻解决方案的小伙伴们提供些思路. 安装Nginx: #安装n ...
- Ubuntu 16下安装64位谷歌Chrome浏览器
Ubuntu 16下安装64位谷歌Chrome浏览器 1.将下载源加入到系统的源列表 在终端中,输入以下命令: sudo wget https://repo.fdzh.org/chrome/googl ...