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

最新文章

  1. Xpath基础语法学习
  2. python入门简介
  3. Win7 64位 VS2013环境编译Squirrel 3.0.7
  4. 【转】详解C#中的反射
  5. Http 1.1协议
  6. JS之相等操作符
  7. 硬件相关-JTAG接口
  8. POJ 1185 炮兵阵地 (状压DP)
  9. 真正理解KMP算法
  10. hdoj 2098 分拆素数和
  11. uva 11437 - Triangle Fun
  12. jquery validation插件
  13. python中uuid来生成机器唯一标识
  14. linux下怎么清理缓存
  15. Guava 2:Basic utilities基本工具
  16. 4.5《想成为黑客,不知道这些命令行可不行》(Learn Enough Command Line to Be Dangerous)—第四章小结
  17. 文加图, 理解Http请求与响应
  18. c# 正则表达式如何处理换行符?
  19. jquery 基础-记住
  20. Ethernet II和802.3

热门文章

  1. python——函数
  2. 安卓手机USB共享网络给PC上网
  3. 追女神助手v0.1
  4. scrapy spider官方文档
  5. linux内核源码分析 - nvme设备的初始化
  6. Git + Maven + Jenkins 实现分布式部署
  7. jQuery系列 第六章 jQuery框架事件处理
  8. 关于redis主从|哨兵|集群模式
  9. 接口自动化测试:python+json+requests+数据驱动
  10. 关于装双系统Ubantu16.04+Win10引导问题