在实际的生产环境中,数据的持久化是常见的操作。那么使用Docker如何实现数据持久化呢?数据卷是Docker容器对数据进行共享和持久化的方式之一。数据卷是一个可供容器使用的特殊目录,它将主机操作系统目录直接映射进容器,其生命周期独立于容器本身。
本实训主要介绍数据卷的创建、挂载、删除与恢复等操作。通过本实训,学习者应该理解和掌握Docker中数据卷的基本原理和管理操作等
创建一个数据卷
#!/bin/bash
#创建一个名为vo1的数据卷,并将该数据卷挂载到container1容器的/dir1目录。
#拉取ubutun 最新镜像,实际生产中,docker pull 这一步可以省略,docker run的时候会自己去拉取。
docker pull ubuntu
#********** Begin *********#
docker run -v vo1:/dir1 --name container1 ubuntu
#********** End **********#
挂载和共享数据卷
#1.创建一个名为container1的容器,并将本地主机的/dir1目录挂载到容器中的/codir1中。
#拉取ubutun 最新镜像,实际生产中,docker pull 这一步可以省略,docker run的时候会自己去拉取。
docker pull ubuntu
#********** Begin *********#
docker run -v /dir1:/codir1 --name container1 ubuntu
#********** End **********#
#2.创建一个名为container2的容器,与container1共享数据卷。
#********** Begin *********#
docker run --volumes-from container1 --name container2 ubuntu
#********** End **********#
查看数据卷的信息
#创建一个容器,并创建一个随机名字的数据卷挂载到容器的/data目录
#拉取ubutun 最新镜像,实际生产中,docker pull 这一步可以省略,docker run的时候会自己去拉取。
docker pull ubuntu &> /dev/null
docker rm container1 -f &>/dev/null
docker run -v /data --name container1 ubuntu
#输出容器container1创建的数据卷的名字
#********** Begin *********#
docker inspect --type container --format='{
{range .Mounts}}{
{.Name}}{
{end}}' container1
#********** End **********#
删除数据卷
#!/bin/bash
#创建一个名为container1的容器,创建一个数据卷挂载到容器的/data目录
#拉取ubutun 最新镜像,实际生产中,docker pull 这一步可以省略,docker run的时候会自己去拉取。
docker pull ubuntu
docker run -v vo4:/data --name container1 ubuntu
#删除container1对应的数据卷
#********** Begin *********#
docker rm -v container1
docker volume rm vo4
#********** End **********#
备份、恢复数据卷
#!/bin/bash
#拉取ubutun 最新镜像,实际生产中,docker pull 这一步可以省略,docker run的时候会自己去拉取。
docker pull ubuntu
# 创建一个vo1的数据卷,并在数据卷中添加1.txt文件
docker run --name vocontainer1 -v vo1:/dir1 ubuntu touch /dir1/1.txt
#1.将vo1数据卷的数据备份到宿主机的/newback中,将容器的/backup路径挂载上去,并将容器内/dir1文件夹打包至/backup/backup.tar
#********** Begin *********#
docker run --volumes-from vocontainer1 -v /newback:/backup ubuntu tar -cvf /backup/backup.tar /dir1
#********** End **********#
#删除所有的容器以及它使用的数据卷
docker rm -vf $(docker ps -aq)
docker volume rm vo1
#在次创建一个vo1的数据卷
docker run -itd --name vocontainer2 -v vo1:/dir1 ubuntu /bin/bash
#2.将保存在宿主机中备份文件的数据恢复到vocontainer2的/中
#********** Begin *********#
docker run --volumes-from vocontainer2 -v /newback:/backup ubuntu tar -xvf /backup/backup.tar -C /
#********** End **********#