Docker 数据卷是一种专门设计的目录,能在多个容器之间共享和持久化数据。数据卷与容器是独立的,可被无限量的容器挂载。所有挂载该数据卷的容器均可读取和写入其中的数据。
创建与挂载数据卷
创建数据卷的命令如下:
docker volume create [数据卷名称]
将数据卷挂载到容器的命令如下:
docker run -v [数据卷名称]:[容器内路径] -it [容器名称]
在上述命令中,“[数据卷名称]” 是你创建的数据卷的名称,“[容器内路径]” 是你希望在容器内挂载数据卷的路径,“[容器名称]” 是你将要运行的容器的名称。
数据卷的默认存储位置
Docker 数据卷位于 Docker 的数据目录下的volumes子目录中。对于Linux系统而言,默认的 Docker 数据目录通常是 /var/lib/docker/,从而数据卷就会创建在 /var/lib/docker/volumes/ 目录下。
在宿主机上指定数据卷的目录
若你希望在宿主机上指定数据卷的目录,可使用 Docker 的绑定挂载(bind mount)功能。通过绑定挂载,可将宿主机上的任意目录挂载到容器内部。
docker run -v [宿主机路径]:[容器内路径] -it [容器名称]
使多个容器挂载同一数据卷
你创建的数据卷可被多个容器同时挂载。这是 Docker 数据卷的一项核心特性,以此实现了数据在容器间的共享和重用。
docker run -v [数据卷名称]:[容器1内路径] -it [容器1名称]
docker run -v [数据卷名称]:[容器2内路径] -it [容器2名称]
挂载另一容器的数据卷
若你希望在一个容器内挂载另一个容器的数据卷,可使用 --volumes-from 参数。
docker run --volumes-from [容器名称] -d [镜像名称]
Docker数据卷的备份与恢复
备份数据
docker run --volumes-from [容器名称] -v $(pwd):/backup centos tar czvf /backup/backup.tar [容器数据卷]
例如:
docker run --volumes-from data-volume2 -v /root/backup:/backup --name datavolume-copy centos tar zcvf /backup/data-volume2.tar.gz /datavolume6
恢复数据
docker run --volumes-from [容器名称] -v $(pwd):/backup centos tar xzvf /backup/backup.tar.gz [容器数据卷]
例如:
docker exec -it data-volume2 /bin/bash
cd /datavolume6
rm -rf lucky.txt
docker run --volumes-from data-volume2 -v /root/backup/:/backup centos tar zxvf /backup/data-volume2.tar.gz -C /datavolume6
docker exec -it data-volum2 /bin/bash
cd /datavolum6
在这个示例中,你可以看到恢复后的数据。