1.创建一个数据卷
2.挂载一个主机文件或目录作为数据卷
3.创建数据卷容器
4.删除数据卷
5.备份、恢复数据卷
1.创建一个数据卷
查看镜像docker images
REPOSITORY TAG IMAGEID CREATED SIZE ubuntu 16.04 77be327e4b63 4 weeks ago 124MB registry 2.2 ad379b517aa6 4 years ago 225MB
创建容器时,创建数据卷
docker run --name test -v /var/test -t -i ubuntu:16.04 /bin/bash
进入容器
cd /var/test
echo "123" > 123
返回宿主机
查看宿主机上数据卷的目录
docker inspect test(容器名)|grep /var/lib/docker/volumes
输出"Source"
:
"/var/lib/docker/volumes/d63dfa0c733e120fb49ce3afaf86a5fa642e2c07046a744ddbc41cce31a1fc09/_data"
,
cd /var/lib/docker/volumes/d63dfa0c733e120fb49ce3afaf86a5fa642e2c07046a744ddbc41cce31a1fc09/_data
ls 就能看到在容器里创建的123文件
2.挂载一个主机文件或目录作为数据卷
echo "453" > /var/html/123
docker run -t -i --name test1 -v /var/html/123(宿主):var/html/123(容器):ro ubuntu:16.04 /bin/bash
:ro设置文件只读,挂载的数据默认是可读可写
3.创建数据卷容器
docker run -t -i -v /var/volume1 -v /var/volume2 --name data ubuntu:16.04 /bin/bash
查看宿主机上与数据卷对应的目录
docker inspect data|grep /var/lib/docker/volumes
"Source"
:
"/var/lib/docker/volumes/c0e076e513c37bb6ba6d695d4663cc78e824685ace45e557d414df73de1785b4/_data"
,
"Source"
:
"/var/lib/docker/volumes/4a8bbd02daa3a7f2081e85fe0652d340ca823e8dbd834fdef50cca6eff68fa28/_data"
,
4.删除数据卷
docker volume rm 4a8bbd02daa3a7f2081e85fe0652d340ca823e8dbd834fdef50cca6eff68fa28
或
docker rm -vf data
连容器一起删除
5.备份、恢复数据卷
备份volume1
root@iZ8ldyhuwn988qZ:/# docker run -i -t --rm --volumes-from data -v $(pwd):/backup ubuntu:16.04 tar cvf /backup/backup.tar /var/volume1
tar: Removing leading `/' from member names
/var/volume1/
/var/volume1/123
root@iZ8ldyhuwn988qZ:/# ls
backup.tar boot etc initrd.img lib lost+found mnt proc run srv tmp var vmlinuz.old
bin dev home initrd.img.old lib64 media opt root sbin sys usr vmlinuz
为了利用数据卷容器备份,使用--volumes-from标记来创建一个加载
data容器卷的容器,并从主机挂载当前目录到容器的
/backup
目录。并备份data卷中的数据,执行完成之后删除容器--
rm
,此时备份就在当前的目录下了。
恢复volume1
先删除容器volume1
rm -rf /var/volume1
docker run --rm --volumes-from data -v $(pwd):/backup ubuntu:16.04 tar xvf /backup/backup.tar -C /
注意-C后面的路径,这个路径表示将数据恢复到容器里的路径。
命令中用
"/"
,即表示将backup.
tar
中的数据解压到容器的/路径下。后面跟什么路径,就解压到这个路径下。因此这里用
"/"
root@iZ8ldyhuwn988qZ:/# docker run --rm --volumes-from data -v $(pwd):/backup ubuntu:16.04 tar xvf /backup/backup.tar -C / var/volume1/ var/volume1/123 root@iZ8ldyhuwn988qZ:/# docker attach data root@67a8bededa9d:/var/volume1# root@67a8bededa9d:/var/volume1# ls 123 root@67a8bededa9d:/var/volume1#
参考:https://www.cnblogs.com/kevingrace/p/6238195.html
https://www.web3.xin/code/2879.html
感谢阅读!