Docker学习(二) 数据卷(Volume)的使用

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

感谢阅读!

posted @   赖大大  阅读(442)  评论(0编辑  收藏  举报
点击右上角即可分享
微信分享提示