Docker容器数据卷(v)对容器内数据持久化详解(备份)
什么是Docker容器数据卷
Docker容器数据卷是一个可供容器使用的目录,位于容器的文件系统之外。容器可以读取和写入数据卷中的文件,而无需将数据复制到容器本身的文件系统中。这使得数据卷允许容器之间共享数据,同时也可以让容器在不删除其数据卷的情况下被删除和重新创建。
创建数据卷
使用以下命令创建一个名为 mydata
的数据卷:
docker volume create mydata
可以通过以下命令查看已经创建的数据卷:
docker volume ls
绑定数据卷
将数据卷绑定到容器中的目录可以使用 -v
选项。例如,将名为 mydata
的数据卷绑定到容器 /app/data
目录:
docker run -d -v mydata:/app/data myimage
在运行时,如果容器向 /app/data
目录写入数据,这些数据将被存储在名为 mydata
的数据卷中。当容器被删除后,数据卷将保留并可以用于新容器。
备份数据卷
可以使用以下命令备份数据卷:
docker run --rm -v mydata:/backup -v /local:/local alpine tar -czf /backup/data.tar.gz /app/data
上面的命令将名为 mydata
的数据卷中的 /app/data
目录打包成 data.tar.gz
文件,并将其保存在 /local
目录中。这个命令使用的容器是 alpine
容器,它具有 tar
命令。
恢复数据卷
可以使用以下命令恢复数据卷:
docker run --rm -v mydata:/backup -v /local:/local alpine tar -xzf /backup/data.tar.gz -C /app/data
上面的命令将名为 mydata
的数据卷中的 /app/data
目录从 /local
目录中的 data.tar.gz
文件中解压缩出来。
示例
以下示例演示了如何创建、绑定、备份和恢复数据卷。
- 创建一个名为
mydata
的数据卷:
docker volume create mydata
- 创建一个名为
mycontainer
的容器,并将名为mydata
的数据卷绑定到容器中的/app/data
目录:
docker run -d -v mydata:/app/data myimage
- 向容器中的
/app/data
目录写入一些数据:
docker exec mycontainer sh -c 'echo "hello world" > /app/data/hello.txt'
- 备份名为
mydata
的数据卷中的/app/data
目录,并将其保存为/local/data.tar.gz
文件:
docker run --rm -v mydata:/backup -v /local:/local alpine tar -czf /backup/data.tar.gz /app/data
- 删除容器:
docker rm -f mycontainer
- 创建一个新容器,并将名为
mydata
的数据卷绑定到容器中的/app/data
目录:
docker run -d -v mydata:/app/data myimage
- 恢复名为
mydata
的数据卷中的/app/data
目录:
docker run --rm -v mydata:/backup -v /local:/local alpine tar -xzf /backup/data.tar.gz -C /app/data
- 验证数据是否已经恢复:
docker exec mycontainer cat /app/data/hello.txt
输出结果为:
hello world
总结
使用 Docker 容器数据卷可以将容器内的数据持久化,并且可以备份和恢复数据卷中的数据。这使得在容器被删除或重新创建时,仍然可以保存数据。在实现容器化应用时,容器数据卷是非常有用的一种技术。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:docker<容器数据卷-v>对容器内数据持久化详解(备份) - Python技术站