设为首页 收藏本站
查看: 902|回复: 0

[经验分享] 跟我一起学docker(六)

[复制链接]

尚未签到

发表于 2019-2-21 10:12:43 | 显示全部楼层 |阅读模式
1.数据卷
数据卷是一个可供容器使用的特殊目录,有如下特性:
数据卷可以在容器之间共享和重用
数据卷修改会立即生效
数据卷的更新不会影响镜像
如果有容器使用数据卷,该卷会一直存在
准备工作:
    创建一个目录,并在目录里面创建文件,文件内写入内容。
DSC0000.jpg

在容器内创建数据卷
在使用docker run的命令时,使用 -v 标记可以在容器内创建一个数据卷,并且可以指定挂在一个本地已有的目录到容器中作为数据卷:
docker run -d --name app1-it -v ${PWD}/webapp:/root/webapp ubuntu bash
通过目录跟容器内建立了一层关系,数据卷发生变化后,容器内和容器外都会随之发生改变。例如容器挂载一个文件,当容器挂了后,文件不会丢失。
注意:默认挂载的数据卷的权限是rw(可读写),如果要求ro(只读),则需要加上对应的ro参数,命令可改为:
docker run -d --name app1-it -v ${PWD}/webapp:/root/webapp:ro ubuntu bash
下面我们一起来操作一下:
    创建webapp目录,在目录下新建文件file,并在文件file中写入“this is a file”。
DSC0001.jpg

    echo ${PWD} 命令标识当前目录。
DSC0002.jpg

    创建启动app1容器并挂载数据卷
DSC0003.jpg

    进入容器找到root目录可查看到已挂载的数据卷。
DSC0004.jpg

    数据卷目录与容器内目录有映射关系,所以不管是在容器内部修改数据卷还是在外部修改数据卷,相对应的数据卷都会发生改变。
DSC0005.jpg

    只读的演示
DSC0006.jpg

2.数据卷容器
数据卷容器用于用户需要在容器间共享一些持续更新的数据,数据卷容器专门提供数据卷供其它容器挂载使用。
Example:
创建数据卷容器db1
docker run -d --name db1 -v/dbdata -ti ubuntu bash
创建容器db2与db1共享dbdata的数据
docker run -d --name db2 --volumes-from db1 -ti ubuntu bash
    在容器db1和容器db2任意一个容器修改dbdata的内容,在两个容器内均生效
数据卷容器的删除:
    如果删除了挂载的容器,数据卷并不会被自动删除,如果要删除一个数据卷,必须在删除最后一个还挂载它的容器时显示使用docker rm -v 命令指定同时删除关联的容器。在下图可看到即使删除aatest,bbtest中仍然有fileA文件。
    在aatest中创建了文件fileA,bbtest可以看到fileA,删除aatest容器后,fileA在bbtest中还可以看到。
    可以利用数据卷容器对其中的数据卷进行备份、恢复,以实现数据的迁移。
备份:
使用下面的命令来备份dbdata数据卷容器内的数据卷:
docker run --volumes-from dbdata -v ${PWD}:/backup --name worker ubuntu \tar cvf /backup/backup.tar/dbdata
说明:
    利用ubuntu镜像创建一个容器worker。使用--volumes-from dbdata参数来让worker容器挂载dbdata的数据卷;使用${pwd}:/backup参数来挂载本地目录到worker容器的/backup目录。
   worker启动后,使用tar命令将/dbdata下的内容备份为容器内的/backup/backup.tar。
    创建dbdata数据卷容器并写入文件:fileA、fileB、fileC
    执行备份命令创建备份tar包:
恢复:
    如果恢复数据到一个容器,可以参照下面的操作。首先创建一个带有数据卷的容器dbdata2:
    docker run -d -v /dbdata--name dbdata2 ubuntu /bin/bash
然后创建另一个新的容器,挂载dbdata2的容器,并使用tar命令解压备份文件到挂载的容器卷中即可:
    docker run --volumes-from dbdata2 -v ${pwd}:/backup ubuntu tar xvf /backup/backup.tar




运维网声明 1、欢迎大家加入本站运维交流群:群②:261659950 群⑤:202807635 群⑦870801961 群⑧679858003
2、本站所有主题由该帖子作者发表,该帖子作者与运维网享有帖子相关版权
3、所有作品的著作权均归原作者享有,请您和我们一样尊重他人的著作权等合法权益。如果您对作品感到满意,请购买正版
4、禁止制作、复制、发布和传播具有反动、淫秽、色情、暴力、凶杀等内容的信息,一经发现立即删除。若您因此触犯法律,一切后果自负,我们对此不承担任何责任
5、所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其内容的准确性、可靠性、正当性、安全性、合法性等负责,亦不承担任何法律责任
6、所有作品仅供您个人学习、研究或欣赏,不得用于商业或者其他用途,否则,一切后果均由您自己承担,我们对此不承担任何法律责任
7、如涉及侵犯版权等问题,请您及时通知我们,我们将立即采取措施予以解决
8、联系人Email:admin@iyunv.com 网址:www.yunweiku.com

所有资源均系网友上传或者通过网络收集,我们仅提供一个展示、介绍、观摩学习的平台,我们不对其承担任何法律责任,如涉及侵犯版权等问题,请您及时通知我们,我们将立即处理,联系人Email:kefu@iyunv.com,QQ:1061981298 本贴地址:https://www.yunweiku.com/thread-675209-1-1.html 上篇帖子: 『中级篇』docker导学(一) 下篇帖子: Docker常用命令整理
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

扫码加入运维网微信交流群X

扫码加入运维网微信交流群

扫描二维码加入运维网微信交流群,最新一手资源尽在官方微信交流群!快快加入我们吧...

扫描微信二维码查看详情

客服E-mail:kefu@iyunv.com 客服QQ:1061981298


QQ群⑦:运维网交流群⑦ QQ群⑧:运维网交流群⑧ k8s群:运维网kubernetes交流群


提醒:禁止发布任何违反国家法律、法规的言论与图片等内容;本站内容均来自个人观点与网络等信息,非本站认同之观点.


本站大部分资源是网友从网上搜集分享而来,其版权均归原作者及其网站所有,我们尊重他人的合法权益,如有内容侵犯您的合法权益,请及时与我们联系进行核实删除!



合作伙伴: 青云cloud

快速回复 返回顶部 返回列表