docker volume创建、备份、nfs存储

摘要:
Docker存储卷环境centos7.4,Dockserversion17.12.0-cdockervolume创建、备份,nfs存储#dockervolumee数据存储在容器中。删除容器会破坏所有要保留的数据(数据持久性)。Dockervolume需要存储在容器外部。Dockervolume是一个文件或目录。将其装载到docker容器,并使用dockervolumebindmuunt#装载任何目录或文件Volumes#
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 #存放宿主机内存中

image

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存储》仅用于学习参考。如对内容有疑问,请及时联系本站处理。

上篇mac升级node后还是原来版本问题Guava中的基本类型工具下篇

宿迁高防,2C2G15M,22元/月;香港BGP,2C5G5M,25元/月 雨云优惠码:MjYwNzM=

相关文章

docker容器的端口映射

1.创建一个Nginx 容器,先不映射端口 [root@localhost ~]# docker run --name my_nginx -d nginx 7be3673a4c0f8f7ffe79a7b11ab86c4327dacaf734ed574e88e28c1db2243716 [root@localhost ~]# docker ps -a...

docker help

localhost == 127.0.0.1 == 本机ip ifconfig 或者 ip addr 查看本地宿主机的ip地址 $ docker help Usage: docker [OPTIONS] COMMAND [arg...]       docker [ --help | -v | --version ]A self-sufficient ru...

Docker网络[6]

推荐: 狂神说Java Docker学习 1. 理解Docker 0 清空所有网络 # 测试 运行一个tomcat $ docker run -d --name tomcat01 tomcat  再启动一个容器tomcat02测试,发现又多了一对网络   1、我们每启动一个docker容器,docker就会给docker容器分配一个ip,我们只要安装...

构建Oracle的Docker镜像

说明:本次构建环境,Centos7.7,Oracle12.2.0.1,Docker19 注意:已安装好docker的,请检查docker版本,1.13以下版本要升级; # df -h 命令检查根目录的空间是否足够,保证剩余空间30GB以上 1.下载到Oracle官网下载Oracle安装包 linuxx64_12201_database.zip,需要注册账号...

Windows 10 安装 Docker for Windows

Docker for Windows是Docker社区版(CE)应用程序。 Docker for Windows安装包包括在Windows系统上运行Docker所需的一切。 本主题介绍了预安装注意事项,以及如何下载和安装Docker for Windows。 下载Docker for Windows 地址:https://download.docker.c...

Docker容器利用weave实现跨主机互联

Docker容器利用weave实现跨主机互联 环境: 实现目的:实现主机A中容器1与主机B中容器1的网络互联 主机A步骤: ①下载复制weave二进制执行文件(需要internet)[root@192 ~]#git clone https://github.com/weaveworks... #如没有git,yum install git[root@19...